ES6的let,const,var的区别
一.let 和 const ( ES6新的 )
1.含义:
let是用来声明变量--代替var来声明变量,还可以重新赋值
const是constant的缩写,它是来声明常量的,常量是不能重新赋值的
const注意:
const一旦声明,就必须立即初始化,不能留到以后赋值
const声明的常量,可以修改值!!!但是不能重新赋值!!!
const person = { username : 'yjx' }
person.username = '你好'
console.log( person ) // 得到 { username : '你好' }
二.let 和 const 与 var 的区别
1. var 可以重复声明; let和const不能重复声明
-- 重复声明,就是已经存在的变量或者常量又声明一次
例子:
var a = 1;
......
var a = 2 ; 没问题
let a = 2;
.....
let a = 4 这就会报错了哦
2. var 会提升变量的声明( 声明提升到当前作用域的顶部--赋值并没有提升 ),let和const没有
例子:
console.log( a )
var a = 10
====>它会这样:
var a
console.log( a ) undefined
a = 10
3.let 和 const 有暂时性死区 ; var 没有
暂时性死区: 只要作用域内存在let const , 它们所声明的变量或常量就自动 ' 绑定 ' 这个区域 , 不再受到外部作用域的影响
例子 :
let a = 1 ;
function btn( ) {
console.log( a )
let a = 3 ;
}
btn( )
这样 : a 就不会再向外层作用域寻找了,所以这里的a就是报错了 ;
如果这个的let a = 3 ; 变成 var 的话 , 那么就是 undefined ;
如果 let a = 3 不要的话,那么就向外层寻找,得到的就是1 ;
4. 在全局作用域中 , var 声明的变量,通过 function 声明的函数,会自动变成window对象的属性或方法
例子:
var age = 18
window.age // 得到 18
let age1 = 21
window.age1 // undefined
5.块级作用域( 重点 ) { } , for循环,while,if,switch , function... 是一个作用域 ( 块级,函数,全局作用域 ) 记得对象不是
var 没有块级作用域
例子:
for( var i=0 ; i <=3; i++){}
console.log( i ) // 4
let 和 const 有块级作用域
例子:
for( let i=0 ; i <=3; i++){} 因为是let , 所以就变成一个块级作用域了,外面的找不到里面的
console.log( i ) // 报错,没有定义这个i
作用域这里就不解释了(一层一层往外找,简单)
本文来自博客园,作者:杨建鑫,转载请注明原文链接:https://www.cnblogs.com/qd-lbxx/p/15816550.html