一.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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/415277.html
標籤:其他
