一、use strict严格模式:高质量代码守卫
严格模式的作用域:当前作用域及其子作用域
严格模式使一切不规范的代码都会报错,使代码可用范围更广泛,举几个例子。
<body>
<script>
"use strict";
web = 22;
console.log(web);
</script>
</body>
例如变量未被定义,使用严格模式会提醒报错。
<body>
<script>
"use strict";
function show1() {
web = 'yooo';
}
function show2() {
site = 'alison';
}
show1();
</script>
</body>
严格模式还作用于当前作用域的子作用域。
<body>
<script>
function show1() {
"use strict";
web = 'yooo';
}
function show2() {
site = 'alison';
}
show2();
</script>
</body>
当作用域更改为show1()函数内后,show2()就不会被严格模式所约束,不会报错。
二、Object.freeze冻结变量
有时声明的变量会被误操作而改变,如下。
<body>
<script>
const HOST = {
url: "yooo.com",
port: 443
};
HOST.port = 80;
console.log(HOST);
</script>
</body>
这时可以使用变量冻结来阻止改变,使代码更健壮稳定。
<body>
<script>
const HOST = {
url: "yooo.com",
port: 443
};
Object.freeze(HOST);
HOST.port = 80;
console.log(HOST);
</script>
</body>
但无报错提示可能会让开发者不知道自己改变了被冻结的变量,因此使用严格模式。
<body>
<script>
"use strict";
const HOST = {
url: "yooo.com",
port: 443
};
Object.freeze(HOST);
HOST.port = 80;
console.log(HOST);
</script>
</body>