2.2.javascript变量作用域

<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
 <meta charset="UTF-8">
 <title>变量的作用域</title>
 <script type="text/javascript">
  /*
  //声明同一个变量后者会覆盖前者所以输出的应该是最后一个变量值
  var foo = "Hello World 1";
  foo = "Hello World 2";
  document.write( foo );
  */

  /*
  //全局作用域下的变量
  var foo = "Hello World";
  //window对象下的属性
  foo = "Hello World";
  //页面输出为true说明两者值相同
  document.write( window.foo == foo );
  */
  
  /*
  //变量var foo只定义在函数func内
  function func(){
   //加var之后变量foo只在函数func内部生效
   var foo = "Hello";
   //但如果去掉var变量foo就会变成window下的对象这时就和window.foo一样了,所以将会输出true
   //去掉var后的变量foo就变成了一个全局变量
   //foo = "Hello";
   
  }
  func();
  //页面输出为false说明两者值不相同,var foo 不等于 window.foo
  document.write( window.foo == "Hello");
  */
  
  //这是全局变量
  var yourName = "阿四";
  myName = "校长";
  //在函数内部也可以调用全局变量
  function ChangeName(){
   document.write("你的名字是" + yourName + "<br/>");
   document.write("我的名字是" + myName + "<br/>");
   //var yourName是局部变量 myName依然是全局变量,所以输出为underfind
   //下面的myName不会覆盖上面的myName,所以输出依然为校长而不是xiaozhang
   var yourName = "a4";
   myName = "xiaozhang"
  };

  //执行ChangeName函数
  ChangeName();
  //输出全局变量 第二个函数内部的myName将会覆盖上面的myName所以输出为xiaozhang
  //yourName将会输出上面的yourName的值阿四,因为下面的函数内部的yourName只在函数内部生效
  document.write(myName + "喜欢" + yourName);


 </script>
</head>
<body>
 
</body>
</html>

原文地址:https://www.cnblogs.com/xiaozhanga4/p/2379186.html