当前位置: 移动技术网 > IT编程>网页制作>CSS > 用var,let,const声明变量作用域异同详解

用var,let,const声明变量作用域异同详解

2018年02月27日  | 移动技术网IT编程  | 我要评论

傅全有简历,画客网,夜店女生头像

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:\vscode\hello\hanShu.js:35

console.log(i);

^

ReferenceError: i is not defined

结果表明,即使实在函数的"块级区域"声明的变量y也能在函数体内出该块级区域之外的地方访问,这就是var的神奇之处,一旦声明即为“全局变量”。而用i变量脱离了声明它的区域就不能访问了,let类型的变量妥妥的“局部变量”啊!

再来说说const,和Java一样,它是常量,一经赋值不可更改,而它的可访问域和let一样,不再多说。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网