[Node.js] ES6新语法

别再傻傻分不清了!ES6的export/import和Node.js的module.exports/require到底怎么选? 本文深入解析ES6的export/import与Node.js的module.exports/require的核心差异与应用场景,帮助开发者在JavaScript模块化开发中做出明智选择。通过对比设计哲学、语法差异和现代工具链集成,提供2023年前后端项目中的最佳实践方案,特别强调ES6模块在Tree-shaking和代码分割中的优势。 阅读详情

概括图

在这里插入图片描述

下载地址

xmind地址

 

const关键字

  • const关键字声明常量的(一旦声明就无法更改)
    • a:没有变量提升
    • b:有块级作用域
    • c:不能重复声明
    • d:不能重新赋值
    • e.声明必须要初始化值

使用场景:
a.一些不会变化的值,比如圆周率PI
b.大事件项目中,保存基地址的就可以用常量.

a.没有变量提升
在这里插入图片描述

//a.没有变量提升
console.log(num); //报错了
const num = 100 ;

 

b:有块级作用域
在这里插入图片描述

//b.有块级作用域
{
	const num = 200;
}
console.log (num); //报错了

 

c:不能重复声明
在这里插入图片描述

//c.不能重复声明
const num = 300;
const num = 400;//报错了
console . log(num);

 
d:不能重新赋值
在这里插入图片描述

//d.声明必须要初始化值
const num;//报错了
console.log (num);

 
e.声明必须要初始化值
在这里插入图片描述

//e.不能重新赋值
const num = 10;
num = 20;//报错了
console . log(num);

 

let关键字

区别varlet
变量提升有无
作用域函数作用域块级作用域
重复声明有无
重新赋值有有

a.没有变量提升
在这里插入图片描述

//a.没有变量提升
console.log(age);//报错了
let age = 38;

 
b.有块级作用域
在这里插入图片描述

//b.有块级作用域
for(let i = 0; i<10; i++){

}
console .log(i);//报错了

 
c.不能重复声明
在这里插入图片描述

//c.不能重复声明
let num = 10;
let num = 20;//报错了
console. log (num);

 
d.可以重新赋值
在这里插入图片描述

//d.可以重新赋值
let num1 = 10;
num1 = 20;
console. log (num1);

 
 

对象解构赋值

取对象中属性的值,赋值给变量.
对象的赋值没有顺序
在这里插入图片描述

//声明一个对象
let obj={
    name: "波波",
    age: 38,
    gender:"男",
    score: 100,
};

let {name :name1, age : age1, gender : gender1, score :score1} = obj;
console.log(name1 , age1 , gender1, score1)

 
 

箭头函数

匿名函数的一个简写

简写规则:

  • a. function 改成=> = >可以读成goesto
  • b.如果只有一个形参,那就可以省略形参小括号.
  • c.如果不是一个形参,0个或者多个形参, 那就不能省略这个形参小括号了
  • d.如果函数体只有一句话,那就可以省略函数体的大括号
  • e.如果函数体只有一句话, 并且这一句话是return 返回值,那return也要省略.
  • f.如果函数体不是一句话, 那就不能省略这个大括号.
  • b.如果只有一个形参,那就可以省略形参小括号.
  • d.如果函数体只有一句话,那就可以省略函数体的大括号
let fn = function(name){
    console. log( '我的名字是' +name );
}
fn('111')

箭头函数
let fn = name => console. log('我的名字是' +name)
fn('111')
  • c.如果不是一个形参,0个或者多个形参, 那就不能省略这个形参小括号了
let fn = function(name,age){
    console. log( '我的名字是' +name ,'我的年龄是' + age);
}
fn('111',11)

箭头函数
let fn = (name,age) => console. log('我的名字是' +name,'我的年龄是' + age)
fn('111',11)
  • e.如果函数体只有一句话, 并且这一句话是return 返回值,那return也要省略
let fn4 = function(age) {
    return age + 10;
}
//箭头函数
let fn4 = age => age+10;
fn4(38);
  • f.如果函数体不是一句话, 那就不能省略这个大括号.
let fn2 = function (num1,num2) {
    console.log(num1+num2)
    return num1+num2+30
}

let fn2 = (num1,num2) => {
    console.log(num1+num2)
    return num1+num2+30
}

console.log(fn2(1, 2));

 
 

对象成员简写

对象里面有name,age,gender.score属性
希望这些属性的值是上面对应变量的值,
在这里插入图片描述

//声明了一些变量
let name='千里';
let age = 18;
let gender = '男';
let score = 100;

var obj={
    name ,
    age,
    gender,
    // fenshu,//相当于fenshu:fenshu,报错了,因为外面没有fengshu这个变量.
    fenshu:score,//这里就不会报错,取外面score变量的值赋值给这个fengshu属性
    score,
    sayHi() {
        console.log('哈哈,你好')
    }
}
console.log(obj);
obj.sayHi();

 
 

对象展开

...

在这里插入图片描述

//声明一个对象
let chinese = {
    skin:'黄色皮肤',
    hair: '黑色头发',
    sayHi(){
        console.log('你好,你吃了吗?');
    }
}

//声明一个对象
let zhuBo = {
    skill: '跳唱rap打篮球,老铁双击666',
    song: '唱大碗宽面'
}

//声明一个对象
let linge = {
    // skin:'黄色皮肤',
    // hair: '黑色头发',
    // sayHi(){
    //     console.log('你好,你吃了吗?');
    // },
    // skill: '跳唱rap打篮球,老铁双击666',
    // song: '唱大碗宽面'

    ...chinese,
    ...zhuBo,
    gender:'男',
    hair: '白发苍苍'//重新给hair这个属性赋值,会覆盖原来的值.
}
console.log(linge);

 
 

数组展开

使用场景:
a.数组拼接
b.利用Math. max( )/Math. min()来求数组中的最大值/最小值.

在这里插入图片描述

//求数组中的最大值.
let arr1 = [10, 8,7, 66,65,34];
//以前的做法
// let max1 = Math. max.apply(Math,arr1);
// console.log(max1);//66

//数据展开语法
let max2 = Math. max(... arr1);
console.log(max2);//66

 
 

数据类型Set

作用和数组类似,和数组不同的是:他不能存放重复的元素
应用场景:数组去重.

在这里插入图片描述

let set1 = new Set([10,20, 30, 40,10, 20,30,50]);
let arr1 = [10, 20,30 , 40, 10,20,30 , 50];
let arrNew=[...new Set(arr1)];//这句话就是把arr1去重,得到一个新的数组arrNew
console.log(arrNew) ;//[10, 20,30, 40, 50 ]

 
 

模板字符串

会保留原样字符串格式,以及可以占位。

在这里插入图片描述

let name = '千里';
let age = 38;
let score = 100;
console. log(`我的名字是${name},我的年龄是${age},我的成绩是${score}`);//我的名字是千里,我的年龄是38,我的成绩是100

 
 

补充:数组方法

forEach();

遍历数组,把遍历出来的每一项交给回调函数.
方法没有返回值

在这里插入图片描述

let arr = [10, 20,30, 40];

arr.forEach(function( item, index) {
    //item就是遍历出来的每一个项
    //index就是遍历出来每-项对应的索引.
    // console. log(item, index);
    console.log(item + 10);
});

 

map()

遍历数组的,有返回值.

在这里插入图片描述

let arr = [10, 20, 30 , 40];
let arrNew = arr.map(function( item, index) {
    //item就是遍历出来的每一项
    //ipdex就是遍历出来的每一项对应的索引
    // console.log(item, index);
    return item*item
});
console.log(arrNew);//[ 100, 400, 900, 1600 ]

 

filter(); 过滤器

filter()方法会返回一个新的数组,新的数组中的元素是通过检查后符合条件的元素.

在这里插入图片描述

let arr=[10,20,11,23,45,67,88]
let arrNew = arr.filter((item,index)=>{
    //item就是遍历出来的每一项
    //index遍历出来的每一项对应的索引
    // console . log (item, index);
    return item % 2 == 0////如果条件成立,会返回当前项,如果条件不成立,不会返回当前项
})
console.log(arrNew);//[ 10, 20, 88 ]

 
 

补充:babel

ES5和ES6的转换

从ES6到ESNext:图解TypeScript编译器如何帮你提前用上新语法 本文深入解析了TypeScript编译器如何通过`tsconfig.json`中的`target`和`lib`等配置,实现从ESNext等最新语法到ES5等旧版本的语法降级。文章通过图解和代码示例,清晰展示了编译流程与模块转换策略,帮助开发者理解如何配置TypeScript以提前使用新特性并确保代码兼容性,是前端工程化实践中的重要指南。 阅读详情

相关推荐

JUEJIN小册|node原理讲解实例探究|2案例一: [龟兔赛跑] Node 的语言基础 - JS(ES5[6[7[8)

本节目标:【实现一个龟兔赛跑小动画】 - 没有金刚钻,不揽瓷器活,必要的 JS 知识是学习 Node 的第一板斧。

VAN 99

ES6 (一)——ES6 简介及环境搭建

ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版。ES6 主要是为了解决 ES5 的先天不足,比如 JavaScript 里并没有类的概念,但是目前浏览器的 JavaScript 是 ES5 版本,大多数高版本的浏览器也支持 ES6,不过只实现了 ES6 的部分特性和功能。

m0_62701594的博客 1999

双硬盘下Ubuntu 16.04与Win10双系统的安装

之前写过一个双系统安装过程,今天再次整理的原因是想重点强调双硬盘的区别。标红的一定要注意看,那就是我自己一步一步踏出来的坑啊...   基础步骤就不再重复,重点讲区别,需要看详细步骤的童鞋(或者你只有一个硬盘)请看我上一篇博客https://blog.csdn.net/weixin_40308540/article/details/80157444   区别:双硬盘和单硬盘的区别是什么呢?...

不吃包子 1124

node.js对es6语法学习

1、es6模板字符串的使用(模板语法) 2、es6对象简化语法 3、ES6其他注意事项 4、ES6中函数形参的默认值 5、解构赋值指定参数的默认值:简化代码 6、扩展运算符(三点运算符即有合并又存在拆解的作用)...

qq_64970126的博客 1220

抖音视频数据获取实战:从API调用到热门内容挖掘

通过抖音API获取视频数据,企业可快速构建数据驱动的运营体系。本文提供了从权限申请到商业落地的全流程指南,建议结合自身业务扩展功能。如有技术问题,欢迎​​评论​​区留言讨论!#抖音开发 #数据挖掘 #短视频运营 #API调用 #Python实战。

WBKJ_Noah_的博客 6397

Xilinx Aurora 8B/10B IP核详解和仿真

Xilinx Aurora 8b/10b IP核的详解,以及使用与仿真示例,对IP核的配置和如何仿真有非常详细的说明,除了对IP核官方文档的内容进行了解析以外,还对GTX引脚的选择等比较容易混淆和不好理解的地方进行了说明。最后对IP核的仿真运行进行了STEP BY STEP 的说明,对仿真的结果也进行了简要的说明。 该文档对Xilinx FPGA和ZYNQ SOC下 AURORA 8B/10B IP核的使用提供了一个快速上手的指导。

weixin_43354598的博客 1万+

nodejs常用语法及功能

1.获取时间 new Date() new Date().toLocaleString() 示例:2018-10-23 10:01:08.255 2.路由跳转 redirect:ctx.state.__HOST__+'/admin/manager/add', 3.页面跳转 await ctx.render('admin/articlecate/add',{ ca...

程序员精进之路 2181

电力电子技术复习笔记

通常在开关过程前后加入谐振,使开关开通前电压先降到0,关断前电流先降到0,消除开关过程电压、电流的重叠,降低它们的变化率,从而大大减小甚至消除开关损耗。小信号线性化模型的原理:忽略开关频率分量和开关频率谐波分量及其边频分量,建立占空比、输入电压等的低频扰动对变换器中的电压、电流影响的模型。解:可以利用变压器的变比改变输出电压大小,避免控制过程的占空比过小或过大,提高控制精度,同时有利于减轻输出电路中电力电子器件的耐压要求。驱动电路:用于控制功率半导体器件的开关,从而控制电路的电流和电压。

Miracle Fan的博客 1万+

Node.js 如何处理 ES6 模块

学习 JavaScript 语言,你会发现它有两种格式的模块。一种是 ES6 模块,简称 ESM;另一种是 Node.js 专用的 CommonJS 模块,简称 CJS。这两种模块不兼容。很多人使用 Node.js,只会用require()加载模块,遇到 ES6 模块就不知道该怎么办。本文就来谈谈,ES6 模块在 Node.js 里面怎么使用。

Rising_cloud的博客 279

win10 运行lisflood_8踩过的坑

1、安装cuda及VS2019 https://www.bilibili.com/read/cv7335974/ 2、netcdf.h头文件找不到问题 https://www.cnblogs.com/lyggqm/p/12926974.html https://blog.csdn.net/u011954296/article/details/54617048 3、编码问题 https://blog.csdn.net/qq_33485434/article/details/81196843 4、

我的笔记 4115

MDK开发篇:基于立创逻辑派FPGA-G1与Cortex-M1软核的按键控制LED实战

本文详细介绍了基于立创逻辑派FPGA-G1开发板与高云Cortex-M1软核的完整开发流程。通过Gowin云源软件配置软核系统与GPIO外设,并在Keil MDK环境中编写按键控制LED的C程序,最终实现程序固化与上电自启动。教程涵盖硬件配置、软件开发、在线调试与固化部署全步骤,帮助STM32开发者快速上手FPGA软核开发。

weixin_42103128的博客 148

在新版的nodejs下,直接使用es6语法的方法

在nodejs8以上已经原生支持es6语法书写代码了,该方法是实验性的,测试可以用用,生产慎用。 需要做如下两步: 把原来的 .js改为.mjs start-point.js ↓ start-point.mjs 需要增加node运行参数 --experimental-modules //举个栗子 node --experimental-modules start-point...

huzhenv5的博客 2023

JSBSim开发手册:飞机仿真模型开发指南

JSBSim是一款开源的飞行动力学模型仿真引擎,支持多种飞行器的仿真,包括固定翼飞机、直升机、无人机等。JSBSim的设计目标是提供一个灵活、高效、精确的飞行动力学仿真环境。飞行动力学仿真:实现飞行器的动力学仿真,包括空气动力学、发动机、质量和惯性等模型。控制系统仿真:实现飞行器的控制系统仿真,包括自动驾驶仪、飞控系统等。环境仿真:模拟飞行环境,包括大气模型、风力模型等。本文详细介绍了如何使用C++进行JSBSim开发,包括系统设计、模型实现、代码优化和性能调优等方面的内容。

qq_38334677的博客 4526

Node.js--在node.js中如何使用ES6新语法

如果想在node.js中使用 es6 module,需要在 package.json 中添加如下属性: "type":"module"

ddddd3332134的博客 389

Linux:安装Debian最新10.x操作系统(超详细)

安装Debian最新10.x操作系统安装Debian最新10.x操作系统1.下载Debian镜像2. 镜像安装引导启动页面,选择图形化安装:选择语言、时区,选中后点击continue:选择键盘模式:配置Hostname主机名,设置Root密码创建普通用户名和密码,进入磁盘分区步骤,选择“所有文件放在同一个分区”确认分区信息磁盘配置完,进入软件安装模块:选择源:进入软件包配置,等待配置结束根据需要选择软件包安装3. 安装完成重启后登录使用 安装Debian最新10.x操作系统 1.下载Debian镜像 下载D

HowieXue 薛永浩的博客 3万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

js的进阶Ts

这样,在一个新的名字空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其他名字空间中。类也是可以继承的,和java都是extend关键字,子类除了不能继承父类的私有成员(方法和属性)和构造函数,其他的都可以继承。ts语言是对js的补充,使得js的可用性提高,同时也支持es6的语法,ts可以通过相应的编译器去变成我们可使用的js文件,不会引起一些错误。ts的使用需要node.js的支持,通过node的虚拟服务器去运行,首先要安装npm,没有的化就在终端。

issa的博客 1094

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

大前端基础 es6新语法, node.js 和 包管理器

简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。node.js 官网 中文网安装无脑下一步即可。然后打开vscode 前端开发工具vscode的插件按照和简单使用打开命令行终端:Ctrl + Shift + y 进入到程序所在的目录,终端输入 node -v 证明安装完成。新建文件夹,然后新建test.js 打开命令行终端:Ctrl

weixin_44480609的博客 376

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

理解ES6:简明中文版 - 探索JavaScript新特性的宝藏

理解ES6:简明中文版 - 探索JavaScript新特性的宝藏 项目简介 是一个开源项目,旨在帮助开发者更深入地理解ECMAScript 6(简称ES6),这是JavaScript的一个重要版本,引入了许多新的语法特性。该项目是基于Dennis Hooper和Addy Osmani合著的原书《Understanding ES6》进行了详尽的翻译和本地化,以便中国开发者能够无障碍地学习这些先进的编...

gitblog_00082的博客 440

JS怎么实现Module模块化?

在JavaScript中实现模块化主要有两种方式:CommonJS和ES6模块。

m0_47408435的博客 1022

Node.js知识梳理之Node.js概述

什么是Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 注意:Node.js不是一门新的语言也不是语言,他是使用C和C++编写的基于V8引擎的JS运行环境,并在ECMAScript基础上提供了一系列扩展对象,比如:fs,event。 Node.js语法基于ECMAScript(Javascript是由ECMAScript+DOM+BOM组...

weixin_33913377的博客 154

ES6&&JavaScript语法笔记(191207更新)

ES6&amp;&amp;JavaScript: 最近因为工作的缘故又用回nodejs了,然后语法和2年前用的变化挺大的,而且JavaScript的语法越来越趋近于支持对象之类的typeScript,这算是最近半个月看书和博客的总结。 顺序次序不一致但对取值没有影响: var{bar,foo}={foo:"aaa",bar:"boo"}; 循环的相关的写法: for a in obj /...

Blogs of imWalker 808

ES6学习笔记

#Node.js 是运行在服务端的 JavaScript,它对 ES6 的支持度更高。Node 已经实现的 ES6 特性。 #webpack webpack 是一个现代 JavaScript 应用程序的静态模块打包器 (module bundler) 。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图 (dependency graph) ,其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle 。 webpack 主要有四个核心概念: 入口 (entry

weixin_53917307的博客 221

javascript是一门多线程的语言_JavaScript 是如何成为一门严肃的编程语言的

从最开始作为一种使网站变得漂亮的方式,JavaScript 已转变为一种严肃的编程语言。• 来源:linux.cn • 作者:Nimisha Mukherjee • 译者:Xingyu.Wang •(本文字数:2310,阅读时长大约:3 分钟)JavaScript 的卑微起步始于 1995 年,是由当时在 Netscape 通信公司工作的 Brendan Eich 在短短 10 天内创建的 。从那...

weixin_39702639的博客 90

JavaScript核心概念与ES6+新特性详解

JavaScript作为动态类型语言,其变量作用域、原型继承和异步处理机制是语言核心特性。ES6引入的let/const解决了变量提升问题,箭头函数简化了this绑定,而Promise和async/await则彻底改变了异步编程模式。这些特性在现代前端框架如React、Vue中广泛应用,配合模块化开发和类型系统(TypeScript),能够构建可维护的大型应用。理解闭包、事件循环等底层原理,结合防抖节流等性能优化技巧,是开发高效Web应用的关键。本文通过大量代码示例,系统讲解从基础语法到高级特性的完整知识体

weixin_42520025的博客 252

ES6概念语法篇

一、概念语法篇 1、概念 ES6 既是一个历史名词,也是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015、ES2016、ES2017 等等。Node.js 是 JavaScript 的服务器运行环境(runtime)。它对 ES6 的支持度更高。 2、可以查看 Node.js 默认没有打开的 ES6 实验性语法。 $ node --v8-options | grep harmony 3、Babel是一个广泛使用的 ES6 转码器,可以将 ES6 代..

lyz_112233的博客 350

CommonJS 的 `module.exports` (以及 `exports`) 和 ES6 的 `export` 对比

ES6 模块系统是 JavaScript 语言层面的标准化模块方案,它在语法、静态分析、Tree Shaking 和处理循环依赖等方面都比 CommonJS 更加先进和强大。虽然 CommonJS 在 Node.js 环境中仍然被广泛使用,但随着 JavaScript 生态的发展,ES6 模块正逐渐成为主流。在现代前端开发中,ES6 模块几乎是唯一的选择。在 Node.js 项目中,也越来越倾向于使用 ES6 模块,尤其是在新的项目中。

2501_91107759的博客 1280
上一篇: Node.js -- 目录
下一篇: [Node.js] 模块化 -- fs文件读取模块
^ω^奋斗小青年
博客等级 码龄8年 474粉丝 126原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值