(function () {
"use strict";
function initialize() {
myList = ['one', 'two', 'three'];
}
function displayList() {
var i, n;
for (i = 0, n = myList.length; i < n; i += 1) {
alert(myList[i]);
}
}
initialize();
displayList();
})();
Run Code Online (Sandbox Code Playgroud)
如果不使用var,myList变量应该被创建为一个全局变量.无论哪种方式,代码都应该运行.代码有什么问题?
myList = ['one', 'two', 'three'];
Run Code Online (Sandbox Code Playgroud)
在严格模式下,不允许以这种方式创建全局变量.
从官方Mozilla 文档 -
首先,严格模式使得不可能意外地创建全局变量.在正常的JavaScript错误输入中,赋值中的变量会在全局对象上创建一个新属性并继续"工作"(尽管未来可能会失败:可能在现代JavaScript中).意外创建全局变量的赋值将以严格模式抛出:
"严格使用";
misypedVaraible = 17; //抛出一个ReferenceError
这工作 -
(function () {
"use strict";
var myList;
function initialize() {
myList = ['one', 'two', 'three'];
}
function displayList() {
var i, n;
for (i = 0, n = myList.length; i < n; i += 1) {
alert(myList[i]);
}
}
initialize();
displayList();
})();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
650 次 |
| 最近记录: |