声明提前问题相关
js 的变量声明语句无论出现在何处,都会先与其他代码首先被执行,使用 var 声明关键词声明变量的
作用于是当前的执行上下文,有可能是外围函数,或者,当变量声明在函数体之外时,则为全局变量
想一个未声明变量复制会隐式地转换为全局变量(它编程了库对象的一个属性)声明变量与未声明变量之间的区别为:
1,声明变量的作用范围限定在其执行的上下文环境中,未生名的变量总是全局的
2. 声明变量在其他代码执行之前创建,未声明的变量在其赋值语句执行之前都是不存在的
3. 声明变量是执行上下文(函数或者全局)的不可配置的属性,而未声明变量是可配置的比如 可以被删除
delete 成功 v 已经不存在了
a 删除不掉,因为 a 是声明变量有不可配置的属性,
局部变量在整个函数体内始终是有定义的,
- <script>
- var a = 100;
- function fun() {
- alert(a); //underfind
- var a = 200;
- alert(a); //200
- }
- fun();
- alert(a); //100
- var a;
- alert(a); //100
- var a = 300;
- alert(a); //300
- </script>
来源: http://www.bubuko.com/infodetail-1864731.html