js中全局变量和局部变量同名时的优先级

如果全局变量与局部变量有相同的名字时,则同名局部变量所在函数会屏蔽全局变量,而优先使用局部变量。

变量作用域代码如下:

<!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关键字),则该变量为全局变量。

二:函数体内的已经定义的变量,在函数外没有函数调用时,则在函数外提示未被定义。

三:函数内改变的只是该函数内定义的局部变量,不影响函数外的同名全局变量的值函数调用结束后,局部变量占据的内存存储空间被收回,而全局变量内存存储空间则被继续保留。

猜你喜欢

转载自blog.csdn.net/weixin_45147894/article/details/106272476