最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

JS严格模式知识点总结

来源:懂视网 责编:小采 时间:2020-11-27 22:18:39
文档

JS严格模式知识点总结

JS严格模式知识点总结:所谓严格模式其实就是一个不会赋值给任何变量的字符串 use strict 如果在全局作用域下 给出这个提示,那整个脚本将采用严格模式。也可以只在函数中打开严格模式 1.严格模式下没有全局变量 a=test 严格模式下会报错,非严格模式下正常 2.删除变量
推荐度:
导读JS严格模式知识点总结:所谓严格模式其实就是一个不会赋值给任何变量的字符串 use strict 如果在全局作用域下 给出这个提示,那整个脚本将采用严格模式。也可以只在函数中打开严格模式 1.严格模式下没有全局变量 a=test 严格模式下会报错,非严格模式下正常 2.删除变量

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

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

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

a="test"

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

2.删除变量

var 有三种声明的情形

  • var 声明的全局变量
  • var 声明的局部变量
  • eval()中声明的全局变量
  • 第一种和第二种情况是无法用 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属性,就会报错。

    声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文档

    JS严格模式知识点总结

    JS严格模式知识点总结:所谓严格模式其实就是一个不会赋值给任何变量的字符串 use strict 如果在全局作用域下 给出这个提示,那整个脚本将采用严格模式。也可以只在函数中打开严格模式 1.严格模式下没有全局变量 a=test 严格模式下会报错,非严格模式下正常 2.删除变量
    推荐度:
    标签: 整理 js 总结
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top