严格模式不仅仅是一个子集:它的产生是为了形成与正常代码不同的语义。
不支持严格模式与支持严格模式的浏览器在执行严格模式代码时会采用不同行为。
所以在没有对运行环境展开特性测试来验证对于严格模式相关方面支持的情况下,就算采用了严格模式也不一定会取得预期效果。严格模式代码和非严格模式代码可以共存,因此项目脚本可以渐进式地采用严格模式。
严格模式对正常的 JavaScript语义做了一些更改。
严格模式通过抛出错误来消除了一些原有静默错误。
严格模式修复了一些导致 JavaScript引擎难以执行优化的缺陷:有时候,相同的代码,严格模式可以比非严格模式下运行得更快。
严格模式禁用了在ECMAScript的未来版本中可能会定义的一些语法。
处理异常的最常见方法如下:
function getPerson(id) {
if (id < 0) {
throw new Error('ID must not be negative: '+id);
}
return { id: id }; // normally: retrieved from database
}
function getPersons(ids) {
var result = [];
ids.forEach(function (id) {
try {
var person = getPerson(id);
result.push(person);
} catch (exception) {
console.log(exception);
}
});
return result;
}
该try子句包含关键代码,并且的catch,如果有异常的内部抛出子句被执行try条款。使用前面的代码:
> getPersons([2,-5,137])
[错误:ID不能为负数:-5]
[{id:2},{id:137}]
严格模式
严格模式(请参阅严格模式)可发出更多警告,并使JavaScript成为更简洁的语言(非严格模式有时称为“草率模式”)。要打开它,请首先在JavaScript文件或<script>标签中输入以下行:
'use strict';
您还可以为每个功能启用严格模式:
function functionInStrictMode() {
'use strict';
}
网友评论