javascript的strict模式

语法

ecmascript从5.0开始,有一个“特殊”的模式,叫做strict,在代码中或者函数内调用

  'use strict'
  function a(){
    //do something...
  }
function a(){
  'use strict'
  //do something...
}

作用

使用strict最大的好处就是让js运行环境帮你检验js是否“最优”

  • 检查对象中的重复键
    var obj = {
      key1: 'a',
      key2: 'b',
      key1: 'c'  //obj.key1 = 'c',值被覆盖了
    };
    
    'use strict'
    var obj = {
      key1: 'a',
      key2: 'b',
      key1: 'c'  //这里会报错,因为之前已经声明了key1的这个key了
    };
    
  • 使用未声明变量
    funtion a(){
      z = 1;
    }
    a();    //不会报错,定义了全局变量z
    
    funtion a(){
      'use strict'
      z = 1;
    }
    a();    //报错,提示z未定义
    
  • 函数中重复的参数名
    function setInfo(name, age, name){
      //do something
    }
    //函数声明的时候就会报错
    
  • 在函数中对arguments进行操作
    function setName(name){
      arguments[0] = 'Jack';
      alert(name);
    }
    setName('Tom');  //赋值成功,弹出Jack
    
    'use strict'
    function setName(name){
      arguments[0] = 'Jack';
      alert(name);
    }
    setName('Tom');  //复制成功,弹出Tom,不会报错
    
  • 试图对只读的属性进行赋值操作
    function a(){
      Object.prototype = 0;
    }
    a();  //不报错,也不会赋值成功
    
    'use strict'
    function a(){
      Object.prototype = 0;
    }
    a();  //会报错
    
    想必还有很多好处,所以大家在code javascript的时候,务必加上strict吧

感谢这篇博文,我在此基础上做了一些扩展,文章地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容