Javascript 为什么此代码没有';我跑不了? (函数(){ “严格使用”; 函数初始化(){ myList=['1','2','3']; } 函数displayList(){ 变量i,n; 对于(i=0,n=myList.length;i
如果不使用var,myList变量将被创建为globle变量。无论哪种方式,代码都应该正在运行。代码有什么问题Javascript 为什么此代码没有';我跑不了? (函数(){ “严格使用”; 函数初始化(){ myList=['1','2','3']; } 函数displayList(){ 变量i,n; 对于(i=0,n=myList.length;i,javascript,scope,Javascript,Scope,如果不使用var,myList变量将被创建为globle变量。无论哪种方式,代码都应该正在运行。代码有什么问题 (function () { "use strict"; function initialize() { myList = ['one', 'two', 'three']; } function displayList() { var i, n; for (i = 0, n = myList.leng
(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();
})();
在严格模式下,不允许以这种方式创建全局变量
来自官方Mozilla-
首先,严格模式使得不可能意外地创建全局
变量。在普通JavaScript中,在赋值中错误键入变量
在全局对象上创建新属性并继续“工作”
(尽管将来可能会失败:在现代JavaScript中很可能)。
会意外创建全局变量的赋值
在严格模式下抛出:
“严格使用”
mistypedvarabile=17;//抛出引用错误
-
(函数(){
“严格使用”;
var myList;
函数初始化(){
myList=['1','2','3'];
}
函数displayList(){
变量i,n;
对于(i=0,n=myList.length;i
在严格模式下,不能设置这样的全局变量
你必须这样做
(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();
})();
(函数(){
“严格使用”;
var myList;
函数初始化(){
myList=['1','2','3'];
}
函数displayList(){
变量i,n;
对于(i=0,n=myList.length;i
通过使用“使用严格”
您将自己限制为严格模式(这是一件好事),但这意味着您不能只使用尚未设置的变量
如果要将
myList
定义为全局变量,则必须在函数启动之前执行此操作,因此在脚本顶部放置:var myList代码>看到这里您得到了什么错误消息了吗?我在JSFIDLE中运行了这段代码;我没有收到任何错误消息…因为:ReferenceError:assignment to undeclared variable myList(第15行)bcz您告诉过您是严格的,但您不是:)
(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();
})();
(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();
})();