Strong Mode介绍
In JavaScript,Node.js,Web开发 on 2015年06月30日 by view: 740
7
If it is too strong, then you are too weak.

就算是背景吧

随着ES2015的到来,JavaScript引进了许多新特性,很多很强大的特性完全可以弥补JS本身语法上的弱点,比如让很多初次尝试JS的程序员感到不习惯的变量提升问题、没有块级作用域问题等问题。

strong mode

ES5增加了strict mode,现在V8又实现了一种新的模式——strong mode

strong modestrict mode的升级版,在语法要求上更严格了,同时正因为这些严格的要求,让开发者得以规避语言本身一些糟粕或者让人困惑的地方。

开启strong mode

跟开启strict一样,js文件第一行或者function第一行加上'use strong';
使用–strong_mode标志位,需要Chrome Cancry或者iojs v2.0以及上。

!!!注意了:如果iojs使用–use_strong标志位,将开启全局strong,不管代码里有没有’use strong;’,一律当作strong mode运行,因此很有可能伤及nodejs本身的模块和第三方不支持strong mode的模块,同样的–use_strict也是全局开启strict模式,都请慎用。

strong mode有哪些改变

下面将涉及到一些ES2015的新特性,这里不做详细讲解,感兴趣的读者可以关注后续ES2015系列相关文章。

Deprecate sloppy equality

废弃了==和!=两个比较操作符,强制使用===和!==。

避免了一些意想不到的结果,大家都懂的。

node –strong_mode example.js

Deprecate ‘var’

废弃了var关键字,变量声明使用const或者let。

const和let不存在变量提升的问题,也可以创造块级作用域。

node –strong_mode example.js

Deprecate ‘delete’

废弃了delete操作符,需要delete的地方可以使用set或者map的delete,可能数据结构需要改变。

node –strong_mode example.js

可以这样解决

Deprecate empty sub-statements

if (expression);这样的空子语句的写法会报错了。

node –strong_mode example.js

Deprecate for-in

废弃了for-in遍历,可以使用for-of替代。

for-in对对象属性进行遍历,for-of对可迭代的对象进行遍历。

for-in存在诸多问题,如果非要遍历对象,可以使用Object.keys(obj)拿到对象的属性列表,然后进行数组遍历。

node –strong_mode example.js

可以这样解决

Deprecate ‘arguments’

函数体内不能再使用arguments变量,可以使用…args替代。


node –strong_mode example.js

可以这样解决
node –strong_mode –harmony-rest-parameters example.js

原创文章转载请注明:

转载自AlloyTeam:http://www.alloyteam.com/2015/06/strong-mode-jie-shao/

  1. magicdawn 2015 年 12 月 14 日

    arguments 跟 delete 怎么是糟粕了[生病]

  2. 小妹征婚啦 2015 年 11 月 22 日

    很好啊.谢谢博主啊

  3. Strong Mode下严(bian)格(tai)的属性访问 | Web前端 腾讯AlloyTeam Blog | 愿景: 成为地球卓越的Web团队! 2015 年 10 月 30 日

    […] 最近在着手把手上的Nodejs代码全面升级到strong模式,strong模式是V8实现的一种新的模式,主要的变化我在前面的文章中已经写过。 […]

  4. い用生命叙述故事 2015 年 9 月 1 日

    这个好赞!

  5. 是时候使用ES 2015了 — 好JSER 2015 年 9 月 1 日

    […] 我在前面的文章介绍过V8新的Strong Mode已经不允许使用arguments关键字了,取而代之是…args。 […]

  6. steelli 2015 年 8 月 5 日

    已经习惯了很多写法了,这么改好吗?

    • TAT.云中飞扬 2015 年 9 月 1 日

      没什么不好的吧,去掉的都是JS的糟粕部分,语言都是逐渐成熟的,成长期间免不了一些阵痛。

发表评论