ES6-----6种变量

这一个系列是ES6的全解析,不一定是完全的目录,希望记录一些自己的理解


ES5一共有两种变量的声明方法,即var和function;到了ES6这里,除了增加的常用的let和const之外,还添加了import和class命令。我们逐一来看:


var

这个想必大家都很清楚,也用的很多。var 是存在var变量不存在块级作用域,是函数作用域;可以多次重复声明同一变量,而且有变量提升的效果。

let

let 是ES6中新增的一种变量命名方式,其作用域也是ES6中特色的块级作用域,某种程度上来说,ES6相当于严格模式中的var,因此不存在变量提升的问题,例如在for循环中,就很适合let声明临时变量。let还有一个特性就是暂时性死区,当存在全局变量的时候,再去块级作用域中用let声明一个相同的变量就会存在暂时性死区。

const

const多用于声明只读的常量,且声明过后,常量的值不能改变;与let一样,只在块级作用域中生效,同样不存在变量提升;同样存在暂时性死区,且不可重复声明同一变量。慎用const声明对象

import

import同样也是ES6中新增的一种方式,不同的是用来处理模块化的函数以及对象,其本质是实现按需加载的思想。静态的import导入与另一个模块的导出绑定,导入的模块运行在严格模式下,且可以向后兼容。这对于项目的模块化,为整体代码缩水有很大的用处。import可以接收一个对象,用对象表示;具有变量提升的效果。

class

按照js中万物皆对象的思想,是不应该有类的这个东西的。但ES6为了更接近传统语言的写法,引入例如类(class)这个概念。class这个其实还是旧瓶装新酒,是为了让整体看起来更像面向对象的写法。有一点注意的是类的内部所定义的所有方法是不可枚举的,可以通过getter和setter访问属性。类不存在变量提升,在内部都是默认的严格模式,但是存在继承。后续会说,这里不多说

function

function声明主要是对函数的管理;在ES6中,声明函数时可以使用默认参数,声明后的默认参数不能用let、const进行二次声明。同样是不能有同名参数,不具有传值的功效;设置完默认参数就会形成函数作用域;这些都是常用的特性,ES6中引入了rest参数(形式为“...变量名”),用于获取函数的其余参数,与其搭配的通常是数组;第二个新特性是扩展运算符(spread)是三个点(...)。这相当于rest参数的逆运算,将一个数组转为用逗号分隔的参数序列,该运算符主要用于函数调用。第三个是判断函数的调用,第四个是比较常用的箭头函数。


最后总结一下,粗略的划分可以如下:let与var主要是针对变量作用,const多服务于常量,import则针对模块化处理,class侧重于伪类的抽象,function则坚守对函数的处理,按照js中万物皆对象,凡是皆可函数的思想,基本上相对于ES5来说,ES6对变量命名的方式做了进一步的细化,可能ES7还会进一步抽象,这里先不表,待看了ES7再回来说

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ES6-ES12是JavaScript的不同版本,每个版本都引入了新的特性和改进。以下是一些ES6到ES12的新特性的示例: ES6(2015年): 1. 箭头函数:简化了函数的语法。 2. 模板字面量:使用反引号(`)来创建多行字符串和插入变量。 3. 解构赋值:从对象或数组中提取值并赋给变量。 4. let和const:引入块级作用域的变量声明方式。 5. Promise:处理异步操作的更强大的方式。 ES7(2016年): 1. Array.prototype.includes():判断数组是否包含某个元素。 2. 指数操作符:使用双星号(**)进行指数运算。 ES8(2017年): 1. async/await:更简洁地处理异步操作。 2. Object.values()和Object.entries():从对象中提取值或键值对。 ES9(2018年): 1. Rest/Spread属性:通过...语法来处理函数参数和对象字面量。 2. Promise.prototype.finally():在Promise结束时执行操作。 ES10(2019年): 1. Array.prototype.flat()和Array.prototype.flatMap():用于处理嵌套数组的方法。 2. Object.fromEntries():将键值对列表转换为对象。 ES11(2020年): 1. 可选链操作符(Optional chaining):简化了访问深层嵌套属性的方式。 2. Nullish coalescing操作符:提供了一种默认值的设定方式。 ES12(2021年): 1. Promise.any():在多个Promise中返回最快解决的结果。 2. Logical Assignment Operators:提供了逻辑运算符与赋值的结合方式。 当然,以上仅是一些主要的新特性,ES6-ES12还有其他许多有用的功能和语法改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值