在javascript中关于局部变量和全局变量简析

最近见群里有一道关于面试的试题,考察的关于全局变量和局部变量的基础知识:
fun foo(){
var a = b = 0;

}
让选择a和b的值分别为多少,或许不仔细看,我们很可能把a和b都当成了局部变量,值为0,其实a是局部变量,b是全局变量,这主要是由于从右至左的操作符优先级,跟我们平时在的css选择器在浏览器中解析的优先级别一样,优先级别较高的是表达式b=0,此时b未经声明,表达式的返回值为0,它被赋给var声明的局部变量a,如下表示:
var a = (b = 0);
如果对链式赋值的所有变量都进行了声明,就不会创建出不期望的全局变量,例如
function foo(){
var a,b;
a= b =0; //二者均为局部变量
}

使用var创建的全局变量(这类变量在函数外部创建)不能删除;
不使用var创建的隐含的全局变量(尽管在函数内部穿件的),可以删除;

虽然变量声明可以在文档任意位置,但是良好的习惯应该是在所有JavaScript代码之前声明变量,并对变量进行初始化赋值。在函数内部也是先声明变量,然后再引用。
变量查询中,访问局部变量要比全局变量更快,因为不需要向上搜索作用域链,局部变量在函数执行完毕的时候会自动清除销毁,不占用内存,而全部变量只有窗口页面关闭的时候,才自动销毁,所以我们平时尽量用局部变量,减少全局变量,减少环境污染

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端岚枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值