全局作用域:
编写在 < script >标签内的代码
页面打开时创建,页面关闭时销毁。
在全局作用域中有个window对象(浏览器窗口),
全局作用域内的变量都会作为window的属性。
全局作用域内的函数都会作为windows的方法。
函数作用域:
编写在函数内的代码
函数执行时创建,函数结束后销毁
在函数内使用var声明的变量,也会在函数执行前声明,但是不赋值。
变量的声明: 使用var声明的变量,会在所有代码执行之前提前被声明,但是不提前赋值,运行的相应位置才赋值。
<script type="text/javascript">console.log(a);var a = 666; </script> 这样写的意思可以这样理解: <script type="text/javascript">var a;变量a在程序最开始的地方提前声明console.log(a);a = 666;运行到对应位置后开始赋值 </script> 程序输出结果为undefined ---------------------------------------------------------------------- <script type="text/javascript">console.log(a);这个会报错,因为没有定义aa = 666; </script>
12345678910111213141516函数的声明:
<script type="text/javascript">show();可以运行show2();报错,因此此时show2为undefined,不是一个函数function show(){会在所有代码执行之前创建console.log("你好");}var show2 = function(){因为用的var,所以说会提前声明,但是为undefined,不是函数console.log("她好");} </script> 1234567891011
<script type="text/javascript">var show2 = function(){document.write(a);输出结果为undefined,因为a定义了,但是还没赋值。var a = 999;} </script> 123456