javaScript中的严格模式
【摘要】 什么是严格模式JavaScript通常情况下隐式运行在正常模式-“Sloppy Mode”,ES5及其版本之后,javaScript可以显示运行在严格模式-“Strict Mode”!在严格模式下。可以减少我们编写不安全的JavaScript代码,获得更加清大的错误检查机制。为了向后兼容,严格模式需要我们手动开启! 如何使用 全文档用如果我们需要对所有的JavaScript代码进行严格模式...
什么是严格模式
JavaScript通常情况下隐式运行在正常模式-“Sloppy Mode”,ES5及其版本之后,javaScript可以显示运行在严格模式-“Strict Mode”!在严格模式下。可以减少我们编写不安全的JavaScript代码,获得更加清大的错误检查机制。为了向后兼容,严格模式需要我们手动开启!
如何使用
全文档用
如果我们需要对所有的JavaScript代码进行严格模式的限制,我们只需要在文件顶部加上use strict
就可以看了!请注意,这行代码需要浏览器支持ES5之后的JavaScript!
函数用
与全文档的用法类似,我们只需要在函数体的第一行加入use strict
!
function foo() {
'use strict';
...
}
严格模式下的代码
变量
严格模式静止创建全局变量,而不显示的声明他们!
例如下面的函数,在正常模式下并不会报错!
function foo() {
test = 123;
}
foo();
console.log(test);
但是在严格模式下,因为我们没有显式的声明test变量,此时会报错!所以,我们需要事先使用var,let和const来申明变量!
PS: 严格模式下,无法删除变量
"use strict";
let test=0
delete test;
函数
不允许重名形参名
这种情况基本也不会有人写吧?正常情况下,我们都是编写具有含义的变量名!
function sum(x, y, x) {
return x + y + x;
}
上面的代码,在正常模式下可以运行,最终的结果是后面的x覆盖前面的x!如果是在严格模式下,则会直接直接报错!
arguments简化
function foo(){
console.log(arguments)
}
foo()
正常模式下:
严格模式下:
与正常模式下的对比,你会发现属性arguments.callee
和arguments.caller
已经被弃用了!
with不可用
八进制数不可用
"use strict";
console.log( 010 === 8)
this在函数中未定义
请注意:这里的函数时非方法函数!因为方法与对象挂钩,有具体的this!
正常模式下,this通常时window对象!
function foo(){
console.log(this)
}
严格模式下,this时undefined
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)