Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

const的作用域坑和初始值坑

  ES6的const关键字很早以前就被Chrome和Firefox实现了,但一直以来大家都是以函数作用域的形式来实现const的。但实际上const关键字所定义的常量应该属于块作用域的,Firefox最近才将这个BUG解决掉,再过基本版本也许才会放出来,而Chrome依然如此实现着。
  作用域是const最坑的地方,它实际上应该和let作用域一样的,但目前的实现是(这个测试使用 Chrome38 和 Firefox33):

  我觉得这个坑可能会误导很多人对const的理解。正确的结果应该是这个(这个测试使用 Firefox 36 Nightly):

  除了作用域坑之外还有个初始值坑,目前浏览器的实现都将其于var之类的语句一样,可以省略初始值。(这个测试使用 Chrome38 和 Firefox33)

  而实际上const必须有初始值,否则抛出异常。下面才是正确的执行结果(这个测试使用 Firefox 36 Nightly):

  以上两个大坑是将来const比较容易被踩到的,其它还有很多细节小坑,对于一般的开发来说基本上不会踩到。而且对于这些细节方面的各种临界情况,我自己的了解还很欠缺,所以暂时就不扯它们了。
网名:
52.91.185.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^