javascript的变量及其作用域和提前声明

 javascript中变量及其作用域是基础中的重点,在阅读JavaScript权威指南之后的总结:


如果未在var声明语句中给变量指定初始值,那么虽然声明了这个变量,但在给它存入一个值之前,它的初始值就是undefined

(在一个作用域内如果声明了一个变量,在赋值前也是undefined) 

JavaScript 的函数作用域是指在函数内部声明的所有变量在函数体内始终是可见的。有意思的是,这意味着变量在声明之前甚至已经可用。JavaScript的这个特性被非正式地称为 声明提前(hoisting,JavaScript函数里声明的所有变量(但不涉及赋值)都被“提前”至函数体的顶部。

 “声明提前”这步操作是在JavaScript引擎的“预编译”时进行的,是在代码开始运行之前,更多细节请阅读相关ppt

http://www.slideshare.net/lijing00333/javascript-engine(要翻墙)

百度云盘链接:http://pan.baidu.com/s/1mguZ1OG

例如:

var scope='global';

debugger; 

function F(){

 debugger; 

 alert(scope);//undefined

 var scope='local';//变量在这里赋初始值,但变量本身在函数体内任何地方均是由定义的

 alert(scope);//local

 alert(cope);//cope is not defined  (未定义)

}

F();

 

即:

function a(){

   alert(scope);

   var scope=’local’;

   alert(scope);

}

可以理解为:

function a(){

   var scope;

   alert(scope);

   scope=’local’;

   alert(scope);

}

另外对于  JavaScript权威指南 本人是十分推荐的,特别是许多web大牛都十分喜爱的一本书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值