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

 2023-09-10 阅读 31 评论 0

摘要:最近见群里有一道关于面试的试题,考察的关于全局变量和局部变量的基础知识: fun foo(){ var a = b = 0; } 让选择a和b的值分别为多少,或许不仔细看,我们很可能把a和b都当成了局部变量,值为0,其实a是局部变量,b是全局

最近见群里有一道关于面试的试题,考察的关于全局变量和局部变量的基础知识:
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代码之前声明变量,并对变量进行初始化赋值。在函数内部也是先声明变量,然后再引用。
变量查询中,访问局部变量要比全局变量更快,因为不需要向上搜索作用域链,局部变量在函数执行完毕的时候会自动清除销毁,不占用内存,而全部变量只有窗口页面关闭的时候,才自动销毁,所以我们平时尽量用局部变量,减少全局变量,减少环境污染

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/39964.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息