这篇文章主要介绍JS严格模式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、雅安服务器托管、营销软件、网站建设、徽州网站维护、网站推广。所谓严格模式其实就是一个不会赋值给任何变量的字符串 “use strict”
如果在全局作用域下 给出这个提示,那整个脚本将采用严格模式。也可以只在函数中打开严格模式
1.严格模式下没有全局变量
a="test"
严格模式下会报错,非严格模式下正常
2.删除变量
var 有三种声明的情形
var 声明的全局变量
var 声明的局部变量
eval()中声明的全局变量
第一种和第二种情况是无法用 delete删掉的。
首先第一种情况声明的全局对象虽然是windows的属性,但这个属性的configurable=false 因此是无法删除的
第二种情况 局部变量更不行了,连依附的对象是谁都不知道,怎么删除
第三种情况eval()稍后会说到。
回归正题。也就是说非严格模式下,可以删除变量,但是会失败返回false.
严格模式下删除变量会报错。
3.对象
在下列情况下操作对象会报错
为只读属性赋值会报错
对不可配置的属性使用delete 会报错
为不可扩展的对象添加属性会报错
在使用对象字面量的时候,属性名必须唯一。比如
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属性,就会报错。
以上是“JS严格模式的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联成都网站设计公司行业资讯频道!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
新闻名称:JS严格模式的示例分析-创新互联
浏览地址:http://scgulin.cn/article/ddisee.html