全局变量和局部变量

js变量作用域有3级(或更多)。全局变量是跨script块的(a=1),局部变量在单独script块有效(var a =1),方法块内的变量在方法块内有效(fucntion f(){

var a =1;

一、function和 while\for\if 形式中的{ }是不同的。
二、JS在function执行时对其中的变量声明进行全局分析。
三、如何在function内部放心地使用全局变量?


var a =1;
function test(){
alert(a);
var a = 2;
alert(a);
}
test();
alert(a);
首先不要被函数里面的顺序迷惑,下面是函数体(全局亦然)实际的执行顺序。
// 1.函数里面查var 后面的属性 // 2.发现已经声明了a 就是第4行的 var a =2 这句,先忽略‘=2’这部分;(即覆盖了全局的a),所以赋给初始值undefined,所以 这里面的所有a都是局部的 //
3.执行函数体(现在才是真正的执行函数),按你看到的实际顺序从上往下执行。4. 第一步执行alert(a),这里的a没有显式的赋值,第二步已经声明并给了初始值,所以是undefined,5. 执行var a=2, 给a赋值(第一次显式赋值),所以结果是2.;;;这里可以分开看 var a 和 a=2,声明部分已经在一开始就执行过,赋值是第5步才执行。。


一、Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分)。切记,是function块,而for、while、if块并不是作用域的划分标准。

二、Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定实变量的作用域。

三,当全局变量跟局部变量重名时,局部变量的scope会覆盖掉全局变量的scope,当离开局部变量的scope后,又重回到全局变量的scope,而当全局变量遇上局部变量时,怎样使用全局变量呢?用window.globalVariableName。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值