JavaScript 严格模式(use strict) -HTML教程 -css5.net


JavaScript 严格模式(use strict)


一、运用 "use strict" 指令

"use strict" 指令中新增 JavaScript 1.8.5 (ECMAScript5) 。

它不能算一条语句,它是一段文字表达式,在老版本中 JavaScript 会被疏忽。

"use strict"; 的用途是指导 JavaScript 代码应当以“严格模式”下实行。

未声明的变量你不能再严格模式下使用。



严格模式的浏览器都支持一下版本:Internet Explorer 10版本 +、 Firefox 4版本+ Chrome 13版本+、 Safari 5.1版本+、 Opera 12版本+。

二、严格的模式声明

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

如下:

示例代码

"use strict";
x = 3.14;       // 错误提示 (x 未声明定义)


演示一下


示例代码

"use strict";
myFunction();

function myFunction() {
   y = 3.14;   // 会出现错误 (y 未定义)
}


演示一下

在函数里面申明是部分用途域 (惟有函数中的代码以严格模式实行):

示例代码

x = 3.14;       // 不报错提示
myFunction();

function myFunction() {
  "use strict";
   y = 3.14;   // 会出现错误 (y 未定义)
}


演示一下

为什么使用严格模式:

  • 严格模式使我们更容易编写“安全的” JavaScript。

    严格模式把之前可承受的“坏语法”转变为真实的错误。

    举例,在普通的 JavaScript 中,错打变量名会创立新的全局变量。在严格模式中,此举将抛出错误,这样就不可能不测创立全局变量。

    在通常中 JavaScript 假如向不可写属性赋值,开发者不会得到任何错误反应。

    在严格模式中,向不可写的、只能读取的、不存在的属性赋值,或者向不存在的变量或对象赋值,将抛出错误


三、严格模式的限制性

不允许运用未声明的变量:

"use strict";
x = 3.14;                // 会出现错误 (x 未定义)


演示一下

对象也是变量。


"use strict";
x = {p1:10, p2:20};      // 会出现错误 (x 未定义)


演示一下

删除变量或对象不允许

"use strict";
var x = 3.14;
delete x;                // 会出现错误


演示一下

函数是不允许删除。

"use strict";
function x(p1, p2) {};
delete x;                // 会出现错误


演示一下

变量重名是不允许的:

"use strict";
function x(p1, p1) {};   // 会出现错误


演示一下

八进制是不允许使用的:

"use strict";
var x = 010;             // 会出现错误


演示一下

转义字符是不允许使用:

"use strict";
var x = \010;            // 会出现错误


演示一下

只读属性赋值是不允许的:

"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});

obj.x = 3.14;            // 会出现错误


演示一下

不允许运用写入只读属性

"use strict";
var obj = {get x() {return 0} };

obj.x = 3.14;            // 会出现错误


演示一下

不能删除的属性是不允许删除的:

"use strict";
delete Object.prototype; // 会出现错误


演示一下

"eval" 字符串不可运用于变量名:

"use strict";
var eval = 3.14;         // 会出现错误


演示一下

"arguments" 字符串不能使用于变量名:

"use strict";
var arguments = 3.14;    // 会出现错误


演示一下

不允许使用 with 这种语句:

"use strict";
with (Math){x = cos(2)}; // 会出现错误


演示一下

作用域 eval() 在创建变量不能被调用 是因为一些安全问题:

"use strict";
eval ("var x = 2");
alert (x);               // 会出现错误


演示一下

四、关键字的保留

为了Javascript的新版本过渡,严格模式新增加了一些保存关键字:

  • implements

  • interface

  • let

  • package

  • private

  • protected

  • public

  • static

  • yield

"use strict";
var public = 1500;      // 会出现错误


演示一下



"use strict" 指令只能在剧本或函数的开首部位被辨认。



五、相关参考文章

HTML 标签:HTML tabindex 属性
HTML 标签:HTML <button> 标签

Copyright © 2017 CSS5.NET教程.CSS5 内容仅用于学习和测试参考。 css5.net All Rights Reserved