当前位置: 首页 > Web前端 > JavaScript

ES6新语法(一)——let、const、var的区别

时间:2023-03-27 13:19:03 JavaScript

ES6简介ES6是ECMAScript6.0的缩写,是JavaScript语言的下一代标准。2015年6月正式发布,目的是统一javascript的语法标准,可用于开发大型应用程序,被称为企业级开发语言。ES6和JavaScript的关系:ES6是JavaScript的规范标准,JavaScript是ES6的一种实现。变量/赋值块级作用域{}ES5作用域包括:全局作用域、函数作用域,没有块作用域的概念。ES6增加了块级作用域,被{}包含,if语句中的{}也属于块级作用域。//var定义的变量可以跨块作用域访问{vara=12;console.log("a",a)}console.log("a",a)//var定义的变量不能跨函数作用域访问(function(){varb=5;})()console.log("b",b)//notdefinedvar与let和const的区别:类型定义变量类型作用域var可以重复定义变量不能限制修改。没有块级作用域。Let不能重复定义。它是一个具有块级作用域的变量,不能跨块访问。Const不能重复定义。它是一个常量,在初始化时必须分配一个块级作用域,const定义的对象属性不能跨块访问。可以改变吗?例1:修改对象的属性值。constper={name:'倩倩'}per.name="我是嘻哈"console.log("per.name",per.name)//打印出我是嘻哈通过前面的例子,我们发现object属性可以修改,请问是什么原因呢?对象是引用类型,per中只保存了对象的指针,也就是说指针不会改变。修改对象的属性不会改变对象的指针,所以是允许修改的。赋值:新增解构赋值,即对数据进行拆解赋值。解构赋值的两条规则:左右两边的pattern必须一致,定义和赋值必须同步进行。示例2:正确的结构赋值let[a,b,c]=[1,2,3]console.log("a",a)//1console.log("b",b)//2console.log("c",c)//例3:左右两边的pattern相同,数据长度不同let[bar,foo]=[1];console.log("bar",bar)//1console.log("foo",foo)//undefined上面解构不成功,变量值等于undefined。注意:对象也可以被解构,但是需要注意的是,对象的解构和数组的解构是有很大区别的。对象的属性没有顺序,变量必须和属性同名才能得到正确的值。示例4:对象解构赋值let{bar,foo}={foo:'aaa',bar:'bbb'}console.log('bar',bar)console.log('foo',foo)console.log('baz',baz)//未定义