温馨提示:这篇文章已超过450天没有更新,请注意相关的内容是否还可用!
摘要:ES6(ECMAScript 2015)是JavaScript语言的一个重要版本更新,引入了许多新特性和语法改进。它包括了模块导入导出、箭头函数、解构赋值、字符串模板字面量、类与继承等关键特性。这些新特性提高了代码的可读性和可维护性,使得JavaScript开发更加便捷高效。ES6语法为JavaScript开发者提供了更多现代化的编程工具和语法支持。
语法
(1)变量提升(let-var-const)
变量提升JavaScript引擎在代码执行前会提升(把)所有的变量声明提升到当前作用域的顶部,尽管变量的声明被提升了,但赋值(即初始化)仍然保持在原地,如果在初始化之前使用变量,其值将为undefined。
暂时性死区(Temporal Dead Zone,TDZ)在let或const声明的变量被初始化之前,如果尝试访问它们,会抛出一个ReferenceError。
varES5中引入的变量声明方式,声明的变量具有函数作用域或全局作用域,存在变量提升现象。
let和constES6中引入的变量声明方式,声明的变量具有块级作用域,let声明的变量可以重新赋值,而const声明的常量(或称为不可重新赋值的变量)一旦被赋值后,就不能再被重新赋值(但内部对象或数组的元素可以修改)。
(2)箭头函数
箭头函数是ES6中引入的一种更简洁的函数表达式语法,它的语法比传统的函数表达式更简洁,且有一些特殊的行为。
语法(parameters) => { functionBody }
+ parameters:箭头函数的参数列表。
+ =>:表示这是一个箭头函数。
+ functionBody:箭头函数的主体。
示例讲解:
箭头函数与传统的函数表达式相比,更简洁,当函数只有一个参数时,方法的括号也可省略,当函数只用一个return值时,return关键字和大括号也可以省略。
箭头函数没有自己的this,即不绑定this,它捕获其所在上下文的this值,这使得在回调函数、事件处理器和定时器中使用箭头函数更加安全和方便。
(3)模板字符串
在ES6中,模板字符串是一种新的字符串语法,用反引号(``)包围字符串内容,模板字符串可以包含变量,这些变量会被解析并替换为实际的值。
(4)解构赋值
解构赋值对象从对象中提取属性,并将它们赋值给不同的变量,这避免了多次使用点操作符(.)或方括号([])来获取对象属性的值。
解构赋值数组直接从数组中提取元素,按照索引位置直接赋值,如果解构的变量数量超过数组的长度,多余的变量会被赋值为undefined。
(5)展开运算
展开运算符(...)将可迭代对象的元素或属性展开为多个参数或元素,可以简单理解为python中的*args。
+ 对象展开:在对象中使用展开运算符,可以将源对象的所有可枚举属性复制到目标对象中。
+ 数组展开:在数组中使用展开运算符,可以将一个数组的元素插入到另一个数组的指定位置。
+ 函数参数展开:在函数调用时,可以使用展开运算符将一个数组的元素作为单独的参数传递给函数。
(6)模块化
默认导出和导入每个模块中只能有一个默认导出,导入时,可以使用自定义的名称来接收这个导出的成员,未导出的任何类型变量都不能被导入,命名导出:每个模块中可以有多个命名导出,每个导出的成员都需要一个名字,这个名字在导入时也需要被使用。
index.js文件如果文件夹下的js文件叫做index.js,那么导入时就可以省略/index.js,只需要导入到文件夹这层就可以,无论是命名导入还是默认导入都适用。
JS中循环遍历
(1)遍历数组
for循环基于索引遍历数组。
for...of循环ES6中引入的,基于迭代取值。
forEach方法数组内置方法,遍历每个元素。
map方法数组内置方法,根据指定方法,创建一个新数组。
(2)遍历对象
for...in循环遍历对象的可枚举属性(包括原型链上的属性)。
Object.keys方法对象方法,返回对象的所有键值,和for...in一样。
Object.values方法对象方法,只返回对象的所有值,没有键。
还没有评论,来说两句吧...