参考:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html

目的:

  • 消除JavaScript语法的一些不合理、不严谨之处,减少一些怪异行为;
  • 消除代码运行的一些不安全之处,保证代码运行的安全;
  • 提高编译器效率,增加运行速度;
  • 为未来新版本的JavaScript做好铺垫。

行为:

全局变量必须显示声明

  1. "use strict"
  2. v = 1 // 报错,v未声明
  3. for(i = 0;i<2;i++){ //报错,i未声明
  4. }

禁止使用with语句

因为with语句无法在编译时就确定,属性到底归属哪个对象。

  1. "use strict";
  2.   var v = 1;
  3.   with (o){ // 语法错误
  4.     v = 2;
  5.   }

创设eval作用域

  1.  "use strict";
  2.   var x = 2;
  3.   console.info(eval("var x = 5; x")); //
  4.   console.info(x); // 2

禁止this关键字指向全局对象

  1.   function f(){
  2.     return !this;
  3.   }
  4.   // 返回false,因为"this"指向全局对象,"!this"就是false
  5.   function f(){
  6.     "use strict";
  7.     return !this;
  8.   }
  9.   // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。
  1.   function f(){
  2.     "use strict";
  3.     this.a = 1;
  4.   };
  5.   f();// 报错,this未定义

禁止在函数内部遍历调用栈

  1.   function f1(){
  2.     "use strict";
  3.     f1.caller; // 报错
  4.     f1.arguments; // 报错
  5.   }
  6.   f1();

禁止删除变量

严格模式下无法删除变量。只有configurable设置为true的对象属性,才能被删除。

  1.   "use strict";
  2.   var x;
  3.   delete x; // 语法错误
  4.   var o = Object.create(null, {'x': {
  5.       value: 1,
  6.       configurable: true
  7.   }});
  8.   delete o.x; // 删除成功

对象不能有重名的属性 函数不能有重名的参数

  1.   "use strict";
  2.   var o = {
  3.     p: 1,
  4.     p: 2
  5.   }; // 语法错误
  6.  
  7.   function f(a, a, b) { // 语法错误
  8.     return ;
  9.   }

禁止八进制表示法

  1.   "use strict";
  2.   var n = 0100; // 语法错误

不允许对arguments赋值 arguments不再追踪参数的变化 禁止使用arguments.callee(已被ES5抛弃)

  1.   function f(a){
  2. "use strict"
  3. arguments++; // 语法错误
  4. }
  5. function f(a) {
  6.     a = 2;
  7.     return [a, arguments[0]];
  8.   }
  9.   f(1); // 正常模式为[2,2]
  10.   function f(a) {
  11.     "use strict";
  12.     a = 2;
  13.     return [a, arguments[0]];
  14.   }
  15.   f(1); // 严格模式为[2,1]

保留字

  1.   function package(protected) { // 语法错误
  2.  
  3.     "use strict";
  4.  
  5.     var implements; // 语法错误
  6.  
  7.   }

"use strict"详解的更多相关文章

  1. "严格模式" use strict 详解

    一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. ...

  2. Javascript 严格模式use strict详解

    1.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. ...

  3. Javascript 严格模式(strict mode)详解

    Javascript 严格模式详解   一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Ja ...

  4. (" use strict")Javascript 严格模式详解

    Javascript 严格模式详解 转载别人的博客内容,浏览了一遍,没有全部吸收,先保存一下链接 http://www.ruanyifeng.com/blog/2013/01/javascript_s ...

  5. 详解javascript的类

    前言 生活有度,人生添寿. 原文地址:详解javascript的类 博主博客地址:Damonare的个人博客 Javascript从当初的一个"弹窗语言",一步步发展成为现在前后端 ...

  6. PHP函数call_user_func和call_user_func_array详解

    今天在群里面,有个叫lewis的在问call_user_func_array的用法,因为之前一直没有用过,也不能说什么,于是看一下手册,发现是这么写的: call_user_func_array (P ...

  7. 【转】jqGrid 各种参数 详解

      [原文]http://www.cnblogs.com/younggun/archive/2012/08/27/2657922.htmljqGrid 各种参数 详解 JQGrid JQGrid是一个 ...

  8. 原生JS:String对象详解

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  9. HTML标签----图文详解

    国庆节快乐,还在加班的童鞋,良辰必有重谢! 本文主要内容 头标签 排版标签:<p>     <br>     <hr>     <center>     ...

随机推荐

  1. Finding LCM (最小公倍数)

    Finding LCM Time Limit: 2000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu [Submit]   ...

  2. vue语法之拼接字符串

    先来一行代码: <div class="swiper-slide" v-for="item in message"> <img v-bind: ...

  3. Log4net日志使用教程-控制台、文本、数据库三种记录方式

    一.log4net简介: 1. Log4net的优点: 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的 ...

  4. Python自学笔记-Django分页器小实例

    from django.core.paginator import Paginator iter = 'abcdefhijklmnopqw' paginator = Paginator(iter,4) ...

  5. 有人提了一个问题:一定要RESTful吗?

    写在前面的话 这个问题看起来就显得有些萌,或者说类似的问题都有些不靠谱,世上哪有那么多一定的事情,做开发都不一定做多久呢,所以说如果你有这个疑问的话是真真有点儿不着调,不过可能也就是随口一问吧,没有深 ...

  6. python虚拟环境的安装配置

    安装 使用pip安装     pip install virtualenv 因为已经安装过了,所以显示这样 在这里我想在这里推荐大家以后再安装类库时可以用豆瓣源来安装,速度很快,因为在国内访问 官方p ...

  7. 如何使用 C# 爬虫获得专栏博客更新排行

    昨天,梦姐问我们,她存在一个任务,找到 关注数排行100 和 浏览量排行100 的专栏博客,在2017年还有更新的专栏. 梦姐说他要出去一趟,M大神在吃饭,于是我估算时间,只有半个钟. 整理一下:半个 ...

  8. HTML5中表单中新增加元素

    新增input 内属性 1,required:若文本内容为空,阻止表单提交格式,写入单词即可 如:<input type="text" name="username ...

  9. C陷阱和缺陷学习笔记

    这段时间把<C陷阱和缺陷>看了,没时间自己写总结.就转一下别人的学习笔记吧http://bbs.chinaunix.net/thread-749888-1-1.html Chapter 1 ...

  10. java将map拼接成“参数=值&参数=值”

    Java将Map拼接成"参数=值&参数=值" 把一个map的键值对拼接成"参数=值&参数=值"即"username=angusbao& ...