美文网首页
js严格模式和非严格模式

js严格模式和非严格模式

作者: 时间的溺水者 | 来源:发表于2020-05-11 23:00 被阅读0次

1、在严格模式中禁止使用with语句。

2、在严格模式中,所有的变量都要先声明,如果给一个未声明的变量、函数、函数参数、catch从句参数或全局对象的属性赋值,将会抛出一个引用错误(在非严格模式中,这种隐式声明的全局变量的方法是给全局对象新添加一个新属性)。

3、在严格模式中,调用的函数(不是方法)中的一个this值是undefined。(在非严格模式中,调用的函数中的this值总是全局对象)。可以利用这种特性来判断JavaScript实现是否支持严格模式:

var hasStrictMode = (function(){"use strict";return this===undefined;}());

4、同样,在严格模式中,当通过call()或apply()来调用函数时,其中的this值就是通过call()或apply()传入的第一个参数(在非严格模式中,null和undefined值被全局对象和转换为对象的非对象值所代替)。

5、在严格模式中,给只读属性赋值和给不可扩展的对象创建新成员都将抛出一个类型错误异常(在非严格模式中,这些操作只是简单地操作失败,不会报错)。

6、在严格模式中,传入eval()的代码不能在调用程序所在的上下文中声明变量或定义函数,而在非严格模式中是可以这样做的。相反,变量和函数的定义是在eval()创建的新作用域中,这个作用域在eval()返回时就弃用了。

7、在严格模式中,函数里的arguments对象拥有传入函数值的静态副本。在非严格模式中,arguments对象具有“魔术般”的行为,arguments里的数组元素和函数参数都是指向同一个值的引用。

8、在严格模式中,当delete运算符后跟随非法的标识符(比如变量、函数、函数参数)时,将会抛出一个语法错误异常(在非严格模式中,这种delete表达式什么也没做,并返回false)。

9、在严格模式中,试图删除一个不可配置的属性将抛出一个类型错误异常(在非严格模式中,delete表达式操作失败,并返回false)。

10、在严格模式中,在一个对象直接量中定义两个或多个同名属性将产生一个语法错误(在非严格模式中不会报错)。

11、在严格模式中,函数声明中存在两个或多个同名的参数将产生一个语法错误(在非严格模式中不会报错)。

12、在严格模式中是不允许使用八进制整数直接量(以0为前缀,而不是0x为前缀)的(在非严格模式中某些实现是允许八进制整数直接量的)。

13、在严格模式中,标识符eval和arguments当作关键字,他们的值是不能更改的。不能给这些标识符赋值,也不能把它们声明为变量、用作函数名、用作函数参数或用作catch块的标识符。

14、在严格模式中限制了对调用栈的检测能力,在严格模式的函数中,arguments.caller和arguments.callee都会抛出一个类型错误异常。严格模式的函数同样具有caller和arguments属性,当访问这两个属性时将抛出类型错误异常(有一些JavaScript的实现在非严格模式里定义了这些非标准的属性)。

相关文章

  • 开发中的严格模式

    js中有严格模式和非严格模式两种运行环境 在开发中,有非严格模式和严格模式2种开发模式 在严格模式下,会做更加严格...

  • 面向对象-严格模式、作用域

    严格模式 js有两中开发模式:非严格模式(默认)+严格模式(“ues strict”) 严格模式:会进行更严格的代...

  • 严格模式和非严格模式

    es6添加了严格模式("use strict")主要作用: 1.严格模式通过抛出错误来消除一些原有的静默错误。 2...

  • JavaScript this

    全局下this 非严格模式/严格模式 window 函数内this 非严格模式 window 严格模式 undef...

  • Nodejs随手记--严格模式

    在文件开头加上这行代码。 为什么要开启严格模式? 1、严格模式将js隐藏陷阱变成明显错误2、严格模式 比 非严...

  • JS系列(三):非严格模式与严格模式

    这个话题涉及面很大,通过学习,不断补充。 非严格模式,浏览器在此模式下表现会有一些不同,主要体现在:变量不需要声明...

  • this指向总结:严格模式和非严格模式

    函数中的this指向和当前函数在哪定义和在哪执行的没有任何的关系 分析this指向的规律如下: 【非严格模式下】 ...

  • js的this指向总结

    this对象 js严格模式下没有window 一、普通函数 非严格模式 普通函数全局调用和局部调用都是指向wind...

  • JavaScript this指向总结

    JS中this的指向有些复杂,分为较多种的情况。此外,在严格模式和非严格模式之间也会有一些差别。 注:node环境...

  • web前端-js基础-javascript高级程序设计(第三版)

    严格模式和非严格模式的区别 'use strict' 严格模式下声明变量的时候必须带上var, 否则会报Refer...

网友评论

      本文标题:js严格模式和非严格模式

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