定义变量的三种方式及区别


区别一 使用var在全局作用域中声明的变量会成为window对象的属性,let不会

  var name='ll';
  console.log(window.name); //ll

  let age = 22;
  console.log(window.age); //undefined

区别二 let声明的范围是块作用域,var声明的范围是函数作用域

  if(true){
    var name='ll';
    console.log(name);//ll
}
  console.log(name); //ll

if(true){
     let age=22
     console.log(age); //22
}
 console.log(age); //报错 age未定义
 

区别三 let声明的变量不会在作用域中被提升,var存在变量提升

   console.log(age) //报错 age未定义   在解析代码时,JavaScript引擎也会注意出现在块后面的let声明
   let age=22;

   var name = 'll';
    function train(){
       console.log(name); 
       var name = 'll'
    }
  train() //undefined;

区别四 let不允许同一个块作用域出现冗余声明,var允许,后面声明的变量值会覆盖前一个。

   var name = 'll';
   var name = 'lu'

   let age = 22;
   let age = 31;//报错 标识符age已经声明过了

对于声明冗余报错不会因为混用let和var而受影响

const声明

const的行为与let基本相同,唯一一个重要的区别是它声明变量时必须同时初始化变量,且尝试修改const声明的变量会导致运行的错误
如果用const声明的是一个对象,那么修改这个对象内部的属性并不违反const的限制


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM