让我头晕的是盲目的、非理性的研究和试验。有必要这样做吗事实上,没有必要做很多测试来理解这些原则。然后我们把ECMAscript规则已经定义好的规则。

VaR的规则是使用var声明变量是一个内部变量,否则调用全局变量,不管函数有多少层。

这样的规则是,这个方法函数总是指向自身,而这种普通的函数总是指向domwindow。


/ / ddamntest1
函数(){
var = 123;本地变量,所有子函数的全局变量
这个= a 456
(函数(){())
警报(a);123,全局
警觉(这一); / /定义,常见的功能,这是DOMWindow
});
}
新富();
/ / ddamntest2
函数(){
var a=123;
这个= 456;
(函数(a){本地声明)
警报(a);456,由本地声明全局覆盖的函数
});
}
新富();
/ / ddamntest3
函数(){
var a=123;
这个= 456;
(函数(){())
警报(a);123,全局
警觉(这一); / /定义,DOMWindow
b = 789;窗口/ B = 789
});
(函数(){())
警报(此b); 789,窗口B。
});
}
新富();
(函数(){())
警报(此b); 789,窗口B。
});

/ / ddamntest4
函数(){
(函数(){())
b = 789;窗口/ B = 789
});
(函数(){())
警报(此b); 789,窗口B。
var b=0;
警报(b);0,这个测试是要写出来的!
});
}
新富();
(函数(){())
警报(此b); 789,窗口B。
警报(b); 789,窗口B。
});


令人惊讶的是,最后一次警报(b),结果仍然是789!


/ / ddamntest5
函数(){
(函数(){())
b = 789;窗口/ B = 789
});
(函数(){())
警报(此b); 789,窗口B。
警报(b);未定义的,全局的
var b=0;
警报(b);0,以及测试!
});
}
新富();
(函数(){())
警报(此b); 789,窗口B。
警报(b); 789,窗口B。
});


ps删除局部变量的方法


警报(价值:+力量+型:+ typeof(STR)) / /声明变量之前参考
var;
警报(价值:+力量+型:+ typeof(STR)) / /语句和变量赋值,参考
=未定义的;删除本地变量
警报(价值:+力量+型:+ typeof(STR)) / /取消变量,参考,和第一个相同


以上是JS的全局变量和局部变量引入萧边的最新分析。我们希望能帮助你。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持网站。