strict模式总结

进入标志

'use strict'
老版本会当做一串普通字符

如何调用

  1. 写在首行,整个文件进入严格模式
  2. 放在函数体第一行
  3. 将整个脚本文件放在一个立即执行的匿名函数之中
    (function (){
    "use strict";
    // some code here
    })();

strict模式特点

将拼写错转成异常

  1. 无法意外创建全局变量
  2. 使引起静默失败的赋值操抛出异常
  3. 删除不可删除的属性时会抛出异常
  4. 重名属性被认为是语法错误
  5. 严格模式要求函数的参数名唯一
  6. 严格模式禁止八进制数字语法,不允许以零(0)开头的八进制语法
    var a = 0o10; // ES6: 八进制
  7. 禁止设置primitive值的属性

简化变量使用

  1. 禁止with
  2. eval不再为上层范围引入新变量
  3. 严格模式禁止删除声明变量

让arguments和eval少了一些奇怪的行为

  1. 名称 eval 和 arguments 不能通过程序语法被绑定(be bound)或赋值
  2. 参数的值不会随 arguments 对象的值的改变而变化
  3. 不再支持 arguments.callee

"安全的" JavaScript

  1. 在严格模式下通过this传递给一个函数的值不会被强制转换为一个对象
  2. fun.caller和fun.arguments都是不可删除的属性而且在存值、取值时都会报错
  3. arguments不会再提供访问与调用这个函数相关的变量的途径

为未来的ECMAScript版本铺平道路

  1. 一部分字符变成了保留的关键字。这些字符包括implements, interface, let, package, private, protected, public, static和yield
  2. 严格模式禁止了不在脚本或者函数层面上的函数声明
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • 一、概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。...
    Bruce_zhuan阅读 358评论 0 6
  • 转自:脚本之家 转载 时间:2016-09-24我要评论 在 JavaScript 的严格模式下,对 JavaSc...
    Michael_林阅读 425评论 1 1
  • 一、概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。...
    才気莮孒阅读 202评论 0 1
  • 有一首歌好像就是这个名字吧,一时想不起来,于是在酷狗搜索栏里填上这四个字,分别听了李健和莫文蔚唱的,各自有各自的味...
    李梓妍Li阅读 430评论 0 0