如果全局变量与局部变量有相同的名字时,则同名局部变量所在函数会屏蔽全局变量,而优先使用局部变量。
变量作用域代码如下:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body><script language="javascript">
var c="change";
function test(){
a=30;
var b=20;
var c=10;
console.log("c="+c);
}
test()
console.log("c="+c);//这里的c为全局变量输出c=change
console.log("a="+a);//这里的a为全局变量,输出a=30
console.log("b="+b);//b为局部变量,故在函数test外调用时,提示未定义
</script>
</body>
</html>
总结:
一:如果变量在函数内没有声明(没有使用var关键字),则该变量为全局变量。
二:函数体内的已经定义的变量,在函数外没有函数调用时,则在函数外提示未被定义。
三:函数内改变的只是该函数内定义的局部变量,不影响函数外的同名全局变量的值,函数调用结束后,局部变量占据的内存存储空间被收回,而全局变量内存存储空间则被继续保留。