当前位置: 首页 > 科技观察

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

时间:2023-03-13 12:00:45 科技观察

ES6简介ES6是ECMAScript6.0的缩写,是JavaScript语言的下一代标准。2015年6月正式发布,目的是统一javascript的语法标准,可用于开发大型应用程序,被称为企业级开发语言。ES6和JavaScript的关系:ES6是JavaScript的规范标准,JavaScript是ES6的一种实现。变量/赋值块级作用域{}ES5作用域包括:全局作用域、函数作用域,没有块作用域的概念。ES6增加了块级作用域,被{}包含,if语句中的{}也属于块级作用域。//定义的变量可以跨块作用域访问//定义的变量可以跨块作用域访问{vara=12;console.log("a",a)}console.log("a",a)//var定义的变量不能跨函数作用域访问(function(){varb=5;})()console.log("b",b)//notdefinedvar不同于let和const:const定义的对象属性是否可以变了?示例:修改对象的属性值。constper={name:'倩倩'}per.name="IamHipHop"console.log("per.name",per.name)//打印出IamHipHop通过前面的例子,我们找到了属性对象的它可以被修改。是什么原因?对象是引用类型,per中只保存了对象的指针,也就是说指针不会改变。修改对象的属性不会改变对象的指针,所以是允许修改的。赋值:新增解构赋值,即对数据进行拆解赋值。解构赋值的两条规则:左右两边的pattern必须一致,定义和赋值必须同步进行。示例:正确的结构赋值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。注意:对象也可以被解构,但是需要注意的是对象和数组的解构是有很大区别的。对象的属性没有顺序,变量必须和属性同名才能得到正确的值。let{bar,foo}={foo:'aaa',bar:'bbb'}console.log('bar',bar)console.log('foo',foo)console.log('baz',baz)//没有定义的