概述
var:用var声明的变量在该声明区域是可全局访问的。
let:let是ES6的新标准,用let声明的变量,只在声明该变量的块级区域可访问(区别于var的全局访问)。
以下面代码为例说明var与let的不同。
let num=
9;
var flag=10;
/**块级变量声明 let*/
function let_test(){
for(
let i=
0;i<
4;i++){
var y=
2;
console.log(
"i="+i+
","+
"y="+y);
}
console.log(
"在函数 let_test中访问num"+
","+
"num="+num);
console.log(
"for循环之外访问:y="+y);
console.log(
"for循环之外访问:i");
console.log(i);
}
前两行代码声明变量的方式都是全局变量,可在全局调用。
用let声明的变量i,属于块级变量,而用var声明的变量y属于“全局变量”(此时的全局是相对与let_test函数来说的,y是该函数中的全局变量),然后在for循环中打印i和y的值:
i=0,y=2
i=1,y=2
i=2,y=2
i=3,y=2
结果表明可正常访问,再来测试一下在for循环之外能否正常访问,在for循环打印i和y的值:
for循环之外访问:y=2
for循环之外访问:i
e:vscodehellohanShu.js:35
console.log(i);
^
ReferenceError: i is not defined
结果表明,即使实在函数的"块级区域"声明的变量y也能在函数体内出该块级区域之外的地方访问,这就是var的神奇之处,一旦声明即为“全局变量”。而用i变量脱离了声明它的区域就不能访问了,let类型的变量妥妥的“局部变量”啊!
再来说说const,和Java一样,它是常量,一经赋值不可更改,而它的可访问域和let一样,不再多说。
最后
以上就是愉快彩虹为你收集整理的用var, let, const声明变量作用域异同的全部内容,希望文章能够帮你解决用var, let, const声明变量作用域异同所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复