Strong Mode 介绍
In 未分类 on 2015年06月30日 by view: 2,835
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:https://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 的糟粕部分,语言都是逐渐成熟的,成长期间免不了一些阵痛。

发表评论