一个Javascript变量作用域

来源:百度知道 编辑:UC知道 时间:2024/06/01 09:52:15
<Script>
var langJS = "JavaScript"; //langJS是全局变量
function test() {
var langVBS = "VBScript"; //langVBS是局部变量
document.write("<LI>" + langJS);
document.write("<LI>" + langVBS);
}
test();
document.write("<LI>" + langJS);
document.write("<LI>" + langVBS);
</Script>

------------------------------与下面的例子
<Script>
var langJS = "JavaScript"; //langJS是全局变量
function test() {
var langVBS = "VBScript"; //langVBS是局部变量
document.write("<LI>" + langJS);
document.write("<LI>" + langVBS);
}
document.write("<LI>" + langJS);
document.write("<LI>" + langVBS);
test();
</Script>

输出的结果为什么不一样?

因为你第二个例子里面在调用test()之前那句“document.write("<LI>" + langVBS); ”发生了错误("langVBS未定义"),所以并没有调用到test()函数,只执行了“document.write("<LI>" + langJS); ”一句。
第一个例子其实也有这个错误,但是在调用test()之后才发生的错误,所以不影响text()函数的执行。

langVBS这个变量的作用域仅限于test()这个函数里面,
在函数外部调用langVBS的时候会因无法找到该变量而出错,
而不再继续执行错误代码及以后的代码。
因此关键就在test()函数调用的位置,
第一个在错误代码前先去调用test()函数,
所以可以看到执行函数后的效果。
第二个是在错误代码后去调用test()函数,
所以函数没有执行也就看不到效果。