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。这两个属性调用时在严格模式下都会抛出类型错误。
  • 相关阅读:
    Java DB 访问(三)mybatis mapper interface接口
    android stdio 安装后gradle 编译失败,设置代理不管用
    超星自动签到并邮件通知
    关于解决Mac使用docker安装SQL server for Linux 中文乱码问题
    Bom简单介绍
    grid-layout
    Position
    前端学习(注册表)
    关于学精通一门语言的个人看法(欢迎留言补充)
    Google 最新推出数据集搜索
  • 原文地址:https://www.cnblogs.com/gabin/p/3701243.html
Copyright © 2011-2022 走看看