1.以下输出的是:
undefined
局部变量
<script type="application/javascript">
var scope="全局变量";
function cal(){
document.writeln(scope+"<br />");
var scope="局部变量"; //(1)处
document.writeln(scope+"<br />");
}
cal();
</script>
2.以上不好理解的话,把函数中的scope改为scope1,则易理解。
原因:函数中的变量为局部变量,整个作用域是函数内。这里主要是定义变量用var和不用var的区别。
即:1)如果使用var,则程序会强制定义一个新变量
2)如果不使用,则系统会优先在当前上下文(不仅是上文,还有下文)中搜索是否存在该变量。只有当该变量不存在时,系统才会重新定义。
所以1中搜索到了下文定义的scope,但在(1)处并未赋值,故显示undefined.