京东云服务器推荐配置、多种配置选择,满足不同业务需求!

热门推荐

⭐ 稳定入门选择

配置:2核2G/5M

适用场景:个人站点 / 轻量应用

特点:性价比高,稳定可靠

¥19/月
立即购买
流量友好

☁️ 轻量云主机

配置:2核4G 5M

适用场景:小型业务 / 博客 / 测试环境

特点:流量友好,性能均衡

¥149/年
立即购买
高性能

💻 云服务主机

配置:4核16G 8M

适用场景:中小型服务 / 多并发场景

特点:充足内存与带宽,性能强劲

¥750/年
立即购买
新人专享

🎁 新人福利

新人访问 → 点击 → 最新活动

可获取 3000元 礼券

立即领取
JavaScript / JavaScript 教程 / JavaScript菜鸟教程
JavaScript 严格模式(use strict)
JavaScript this 关键字JavaScript 提升(Hoisting)

JavaScript 严格模式(use strict)

ECMAScript 5中引入的JavaScript严格模式是选择加入 JavaScript受限变体的一种方式。

严格模式不仅仅是一个子集:它有意地具有与普通代码不同的语义。

严格模式使编写“安全” JavaScript更加容易。

严格模式将以前接受的“错误语法”更改为实际错误。

在严格模式下,例如,您不能使用未声明的变量。

调用严格模式

严格模式是通过"use strict";在脚本或函数的开头添加来声明的。

要为整个脚本调用严格模式,在任何其他任何声明之前,输入语句“use strict” ::

"use strict";
str = "嗨,我是严格模式脚本!";  // 导致错误,因为未声明str
测试看看‹/›

要为函数调用严格模式,请将确切的语句"use strict";放在函数的主体中,然后放在其他任何语句之前:

function myFunc() {
  // 函数级严格模式语法
  "use strict";
  str = "大家好,我是严格模式函数!";  // 这将导致一个错误
  return str;
}
测试看看‹/›

严格模式可以帮助您编写更简洁的代码,例如防止使用未声明的变量。

该"use strict"指令只能在脚本或函数的开头识别。

单引号和双引号语法都是可以接受的('use strict';或"use strict";)。

严格模式下的常见限制

如您所知,在严格模式下,必须声明所有变量。

如果将值分配给不是声明变量的标识符,则将引发ReferenceError:

"use strict";
x = 5; // ReferenceError: x 没有定义
测试看看‹/›

不允许使用未声明的对象(对象也是变量):

"use strict";
coord = {x:10, y:20};   // ReferenceError: coord 没有定义
测试看看‹/›

在严格模式下,如果尝试删除变量,则会抛出语法错误:

"use strict";
var msg = "Hello World";
delete msg;// SyntaxError
测试看看‹/›

同样,当您尝试在严格模式下删除函数时,会出现语法错误:

"use strict";

function sum(a, b) {
return a + b;
}

delete sum;// SyntaxError
测试看看‹/›

在严格模式下,不允许重复参数名称:

"use strict";

function square(a, a) {  // SyntaxError
return a * a;
}
测试看看‹/›

在严格模式下,不允许写入只读属性:

"use strict";
var person = {name: "Akash", age: 22};
Object.defineProperty(person, "gender", {value: "male", writable: false});

person.gender = "female";   // TypeError
测试看看‹/›

在严格模式下,不允许使用with语句:

"use strict";
with (Math){x = sqrt(25)};   // SyntaxError
测试看看‹/›

在严格模式下,不允许使用八进制数字:

"use strict";
var x = 010;   // SyntaxError
测试看看‹/›

出于安全原因,eval()不允许在调用它的范围内创建变量:

"use strict";

eval("var x = 10;");
console.log(x);   // ReferenceError: x 变量没有定义
测试看看‹/›

字符串“eval”不能用作标识符(变量名):

"use strict";
var eval = "(xsc123.com)";// SyntaxError
测试看看‹/›

字符串“arguments”不能用作标识符(变量名):

"use strict";
var arguments = "(xsc123.com)";// SyntaxError
测试看看‹/›

为将来的ECMAScript版本铺平道路

将来的ECMAScript版本可能会引入新的语法,ES5中的严格模式会应用一些限制以简化过渡。

如果在严格模式中禁止这些更改的基础,则更容易进行一些更改。

在严格模式下,以下标识符列表成为保留关键字:

  • implements

  • interface

  • let

  • package

  • private

  • protected

  • public

  • static

  • yield

"use strict";
var package = true;  // This will cause an error
测试看看‹/›
JavaScript this 关键字JavaScript 提升(Hoisting)