• 技术文章 >web前端 >js教程

    详细讲解JS严格模式知识点有哪些?

    亚连亚连2018-06-04 11:17:12原创634
    本篇文章给大家整理了JS严格模式下的相关知识点以及代码实例分享,感兴趣的一起学习下吧。

    所谓严格模式其实就是一个不会赋值给任何变量的字符串 “use strict”

    如果在全局作用域下 给出这个提示,那整个脚本将采用严格模式。也可以只在函数中打开严格模式

    1.严格模式下没有全局变量

    a="test"

    严格模式下会报错,非严格模式下正常

    2.删除变量

    var 有三种声明的情形

    第一种和第二种情况是无法用 delete删掉的。

    首先第一种情况声明的全局对象虽然是windows的属性,但这个属性的configurable=false 因此是无法删除的

    第二种情况 局部变量更不行了,连依附的对象是谁都不知道,怎么删除

    第三种情况eval()稍后会说到。

    回归正题。也就是说非严格模式下,可以删除变量,但是会失败返回false.

    严格模式下删除变量会报错。

    3.对象

    在下列情况下操作对象会报错

    1. 为只读属性赋值会报错

    2. 对不可配置的属性使用delete 会报错

    3. 为不可扩展的对象添加属性会报错

    4. 在使用对象字面量的时候,属性名必须唯一。比如

    var person={
      name:"1",
      name:"2"
    }

    非严格模式下会默认取值第二个,严格模式下会报错。

    4.函数

    严格模式要求函数参数名称必须唯一

    function(n,n){
      // todo
    }

    在非严格模式下,这个函数声明不会报错,通过参数名只能访问到第二个参数,第一个参数得通过arguments去访问。

    arguments在两种模式下也有所不同

    在非严格模式下,修改命名参数的值会反映到arguments对象中,在严格模式下两个值是独立的。

    淘汰了 arguments.callee(引用函数本身),arguments.caller(引用调用函数)。

    严格模式下函数名不能使用js保留字

    **严格模式下只能在脚本的顶级和在函数内部声明函数,在if语句中声明函数会导致语法错误。**

    if(true){
      function(){
       // 严格模式下报错
    }
    }

    5.this

    在非严格模式下使用函数的apply(),call(),传入null 或者undefined值会被转换为全局对象。在严格模式下,函数的this始终是指定的值,无论指定的是什么值。

    var a="1";
    function test(){
     console.log(this.a)
    }
    test.call(null) 在非严格模式下会输出1,严格模式下this就指代的就是null,null没有a属性,就会报错。

    上面是我整理给大家的,希望今后会对大家有帮助。

    相关文章:

    通过使用vue如何才能实现添加mp3音频文件

    通过JS中利用FileReader如何实现上传图片前本地预览功能

    根据select标签设置默认选中的选项方法该怎么做?

    以上就是详细讲解JS严格模式知识点有哪些?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:javascript 知识点 模式
    上一篇:如何使用Zepto tap事件的穿透与点透(附代码) 下一篇:详细解读在js函数相关内容
    大前端线上培训班

    相关文章推荐

    • javascript如何将数字转为字符串• javascript如何改变HTML内容• javascript如何求图形的面积• javascript中字符串怎么转换成数组• javascript如何制作验证码

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网