美文网首页Web前端之路前端Web 前端开发
简述JavaScript严格模式(推荐使用此模式~)

简述JavaScript严格模式(推荐使用此模式~)

作者: 小睿7777777 | 来源:发表于2016-03-26 14:19 被阅读223次

    ECMAScript 5的严格模式是JavaScript中的一种限制性更强的变种方式。注意它并不是一个语法子集:它在语义上与正常代码有着明显的差异!!!严格模式在语义上与正常的JavaScript有一些不同。 首先,严格模式会将JavaScript陷阱直接变成明显的错误。其次,严格模式修正了一些引擎难以优化的错误:同样的代码有些时候严格模式会比非严格模式下更快。 第三,严格模式禁用了一些有可能在未来版本中定义的语法。

    那如何启动该模式呢,两种方式:

    (1)为某个script标签开启严格模式

    为整个script标签开启严格模式, 需要在所有语句之前放一个特定语句"use strict"。

    (2)为某个函数开启严格模式

    为某个函数开启严格模式,需要把"use strict"(或'use strict';)声明放在函数体所有语句之前。

    接着讲严格模式对语法有哪些限制呢?

    (1)直接使用未声明变量将抛异常。

    (2)禁止使用with语句。

    (3)eval仅仅为被运行的代码创建变量,其不会影响到外部变量,比如

    var x = 17;

    eval("'use strict'; var x = 42; ");

    alert(x === 17);//true

    (4)当this的值为null或undefined时,该值不会转换为全局对象,比如

    function testFunc( ) {

    return this;

    }

    vartestvar = testFunc();//vartestvar为undefined

    (5)fun.caller和fun.arguments不可用,比如

    function f1(){

    "use strict";

    f1.caller; // 抛异常

    f1.arguments; // 抛异常

    }

    f1();

    (6)arguments.callee不可用,arguments不再追踪参数的变化,参数变化同时也不影响arguments。

    (7)delete操作:删除变量,函数或参数,删除configurable特性设置为false的属性将抛异常。

    (8)写入到只读属性,将属性添加到extensible属性设置为false的对象,对一个使用getter方法读取的属性进行赋值将抛异常。

    (9)对象重名属性,方法重名参数将抛异常。

    (10)禁止八进制表示法。

    (11)函数必须声明在顶层,即不允许在非函数的代码块内声明函数。

    (12)不能使用implements, interface, let, package, private, protected, public, static, yield关键字。

    本严格模式简述并不完整,且条理性不够,详情请参考链接资源,最后建议前端新手们尽量开始使用严格模式,不要问我为什么,开头已经说了严格模式的目的了哈,另外面试很可能被问到啊~~~

    官方文档

    阮一峰:Javascript 严格模式详解

    相关文章

      网友评论

        本文标题:简述JavaScript严格模式(推荐使用此模式~)

        本文链接:https://www.haomeiwen.com/subject/qiydlttx.html