栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

ECMAScript 2015(ES6)和'let'和'const'有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ECMAScript 2015(ES6)和'let'和'const'有什么区别?

let
和之间的区别
const
是,一旦您使用将键值/对象绑定到变​​量
const
,便无法将其重新分配给该变量。换句话说:

const something = {};something = 10; // Error.let somethingElse = {};somethingElse = 1000; // This is fine.

问题细节声称这是对ES5的更改-这实际上是一种误解。

const
在仅支持ECMAscript 5的浏览器中使用将始终引发错误。该
const
语句在ECMAscript 5中不存在。其行为是JS Bin对正在运行的Javascript类型产生误导,或者是浏览器错误。

在实践中,浏览器并不仅仅是一次从0%对ECMAscript 2015(ECMAscript 6)的支持变为一次100%的支持-功能逐点添加,直到浏览器完全兼容为止。JS Bin所谓的“ Javascript”仅表示您的浏览器当前支持的任何ECMAscript功能-并不表示“ ES5”或“ ES6”或其他任何形式。许多浏览器都支持

const
和let他们完全支持ES6前,但有些(如Firefox)对待
const
像let一段时间。这可能是问题的提问者的浏览器支持let,并
const
却没有正确地实现它们。

其次,Babel和Traceur之类的工具无法使ES6在较旧的浏览器中“运行”,而是将ES6代码转换为能完成大致相同功能的ES5。Traceur可能会将

const
语句转换为var语句,但是我怀疑它总是强制将const语句的语义完全复制到ES5中。使用JS Bin使用Traceur运行ES6不会获得与在完全符合ES6规范的浏览器中运行ES6完全相同的结果。

重要的是要注意

const
不要使值或对象不可变。

const myArray = [];myArray.push(1); // Works fine.myArray[1] = 2; // Also works fine.console.log(myArray); // [1, 2]myArray = [1, 2, 3] // This will throw.

目前使对象(浅)不变的最好方法是Object.freeze()在其上使用。但是,这只会使对象本身成为只读对象。对象属性的值仍然可以更改。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/464663.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号