更多工具>开发者工具") 开启调试模式,查看报错信息...">
最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • JavaScript 严格模式(use strict)

    正文概述 掘金(Kenguba)   2021-03-28   866

    严格模式声明

    • 严格模式通过在脚本或函数的头部添加 "use strict"; 表达式来声明
    • 实例中我们可以在浏览器按下 F12 (或点击"工具>更多工具>开发者工具") 开启调试模式,查看报错信息
    <!DOCTYPE html>
    <html>
      <body>
    
        <h1>使用 "use strict":</h1>
        <h3>不允许使用未定义的变量</h3>
        <p>浏览器按下 F12 开启调试模式,查看报错信息</p>
        <script>
          "use strict";
          x = 3.14;       // 报错 (x 未定义)
        </script>
    
      </body>
    </html>
    

    JavaScript 严格模式(use strict)

    <!DOCTYPE html>
    <html>
      <body>
    
        <p>在函数内使用 "use strict" 只在函数内报错 </p>
        <p>浏览器按下 F12 开启调试模式,查看报错信息</p>
        <script>
          x = 3.14       // 不报错 
          myFunction()
          function myFunction() {
            "use strict"
            y = 3.14 // 报错 (y 未定义),如果注释作用域中({})的"use strict"则不会报错
          }
        </script>
    
      </body>
    </html>
    

    为什么使用严格模式

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

    "严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。 另一方面,同样的代码,在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式"下可以运行的语句,在"严格模式"下将不能运行。掌握这些内容,有助于更细致深入地理解Javascript,让你变成一个更好的程序员

    严格模式的限制

    不允许使用未声明的变量

    "use strict";
    x = 3.14               // 报错 (x 未定义)
    y = {p1:10, p2:20}     // 报错 (y 未定义)
    

    不允许删除变量或对象

    "use strict";
    var x = 3.14;
    delete x;                // 报错
    

    不允许删除函数

    "use strict";
    function x(p1, p2) {}; 
    delete x;                // 报错 
    

    不允许变量重名

    "use strict";
    function x(p1, p1) {};   // 报错
    

    不允许使用转义字符

    "use strict";
    var x = \010;            // 报错
    

    不允许对只读属性赋值

    "use strict";
    var obj = {};
    Object.defineProperty(obj, "x", {value:0, writable:false});
    
    obj.x = 3.14;            // 报错
    

    不允许对一个使用getter方法读取的属性进行赋值

    "use strict";
    var obj = {get x() {return 0} };
    
    obj.x = 3.14;            // 报错
    

    不允许删除一个不允许删除的属性

    "use strict";
    delete Object.prototype; // 报错
    

    变量名不能使用 "eval" 字符串

    "use strict";
    var eval = 3.14;         // 报错
    

    变量名不能使用 "arguments" 字符串

    "use strict";
    var arguments = 3.14;    // 报错
    

    不允许使用以下这种语句

    "use strict";
    with (Math){x = cos(2)}; // 报错
    

    由于一些安全原因,在作用域 eval() 创建的变量不能被调用

    eval()能够解析JavaScript 字符串并执行字符串中的脚本代码

    "use strict";
    eval ("var x = 2");
    alert (x);               // 报错
    

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

    function f(){
        return !this;
    } 
    // 返回false,因为"this"指向全局对象,"!this"就是false
    
    function f(){ 
        "use strict";
        return !this;
    } 
    // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true
    

    因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错

    function f(){
        "use strict";
        this.a = 1;
    };
    f();// 报错,this未定义
    

    禁止使用保留关键字

    为了向将来Javascript的新版本过渡,严格模式新增了一些保留关键字:

    implementsinterfacelet
    packageprivateprotectedpublicstaticyield
    "use strict";
    var public = 1500;      // 报错
    

    起源地下载网 » JavaScript 严格模式(use strict)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元