旧时的 "var"

2020-07-11  本文已影响0人  雨落流年

前言

回想初学javascript时,也不知道es6 、es7 等等标准,变量声明皆为var来声明,如果写一个几百行的js文件则可能就会出现声明了同一个变量冲突的情况,往往丈二和尚摸不着头脑,为啥这个变量是这个值。所以新的标准推荐使用 const和let进行变量声明会规范许多,避免一些个莫名的重名变量覆盖值的情况。

var的作用域
if (true) {
  var test = true; // 使用 "var" 而不是 "let"
}

alert(test); // true,变量在 if 结束后仍存在

运行后你就能看出来,test应该是在if代码块中的,出了if不应该能够再获取到test的值,test应该是没有被声明的,但var使得它变成了全局作用域的变量,这样就会出现一些个你在其他地方声明的变量被更改值的情况,而let声明的变量就只在if当中可以访问,也就是块级作用域,更为规范以及不反人类。

let 作用域示例
if (true) {
  let test = true; // 使用 "let"
}

alert(test); // Error: test is not defined

const 与之相似但不能被更改

结论

var 与 let/const 有两个主要的区别:

上一篇下一篇

猜你喜欢

热点阅读