zoukankan      html  css  js  c++  java
  • 'use strict'

      在支持ECMAScript5严格模式解释器的浏览器下,在脚本开始处加上'use strict'指令来表示下面的代码将用严格模式的解释器来解释。

    'use strict';
    // something to do

      与普通模式区别的是

    • 禁止使用具有作用域链的with语句
    • 所有的变量须在声明后使用
      function test1() {
          a = 1; // 创建了一个全局变量
          console.log(1); // 1
      }
      function test2(){
          'use strict';
          b = 1; // 引用错误异常 ReferenceError
          console.log(b);
      }
    • 函数体内的this===undefined
      function test3(){
          console.log(this); // this为全局对象
      }
      function test4(){
          'use strict';
          console.log(this); // undefined
      }
    • call和apply方法里的this总是第一个传入的参数,不会进行转换
      function test5(){
          console.log(this);
      }
      function test6(){
          'use strict';
          console.log(this);
      }
      test5.call(); // 输出全局变量
      test6.call(); // 输出undefined
    • 操作不可编辑的属性会报错
      function test7(){
          'use strict';
          delete Object.prototype;
      }
      test7(); // 抛出TypeError异常
    • 同作用域下同名属性和同名方法会报错(非严格模式下不报错)
    • 不允许八进制直接量(非严格模式中某些浏览器实现可以)
    • 在严格模式中eval和arguments作为关键字,不能赋值,也不能用来做变量、函数名、用作函数参数或用作catch模块的标识符
    • delete后出现非法标识符会报错
    • 限制了对调用栈的检测能力,如arguments.callee和arguments.caller。这两个属性调用时在严格模式下都会抛出类型错误。
  • 相关阅读:
    python计算均值方差
    Linux shell一行流编程实践
    where are you from
    dinner vs supper
    Python格式化输出
    吐槽win8
    HTML学习(六)图像
    HTML学习(五)链接
    HTML学习(四)样式
    URL与String转换
  • 原文地址:https://www.cnblogs.com/gabin/p/3701243.html
Copyright © 2011-2022 走看看