美文网首页
旧时的 "var"

旧时的 "var"

作者: 雨落流年 | 来源:发表于2020-07-11 22:30 被阅读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 有两个主要的区别:

    • var 声明的变量没有块级作用域,它们的最小作用域就是函数级作用域。
    • var 变量声明在函数开头就会被处理(脚本启动对应全局变量)。

    相关文章

      网友评论

          本文标题:旧时的 "var"

          本文链接:https://www.haomeiwen.com/subject/yjlwcktx.html