javascript中let和var的區別

2021-09-11 05:55:53 字數 1515 閱讀 7557

0.1 2018.02.23 11:06* 字數 584

let是es6中新增命令,也是用來宣告變數的,可能很多小夥伴都像我一樣,定義變數的時候都會用var而很少用到let,那麼,let和var到底有什麼區別呢?

let和var的區別體現在作用域上。var的作用域被規定為乙個函式作用域,而let則被規定為塊作用域,塊作用域要比函式作用域小一些,但是如果兩者既沒在函式中,也沒在塊作用域中定義,那麼兩者都屬於全域性作用域。

全域性作用域

var 和 let 宣告的變數在全域性作用域中被定義時,兩者非常相似

let bar = 'hehe';

var baz = 'lala';

但是,被let宣告的變數不會作為全域性物件window的屬性,而被var宣告的變數卻可以

console.log(window.bar);  //undefined

console.log(window.baz); // 'able'

函式作用域

var 和 let 在函式作用域中宣告乙個變數,兩個變數的意義是相同的。

function  afun()
塊作用域

在塊作用域中兩者的區別較為明顯, let只在for()迴圈中可用,而 var是對於包圍for迴圈的整個函式可用

function  afun1()

// i 對於for迴圈外的範圍是不可見的(i is not defined)

}function afun2()

// i 對於for迴圈外的範圍是可見的

}

let 和var 重新宣告

var允許在同一作用域中宣告同名的變數,而let不可以

let me  = 'foo';

let me = 'bar'; //syntaxerror: identifier 'me' has already been declared

var me = 'foo';

var me = 'bar'; //這裡me被替代了,是可以重複宣告的

es6中還有乙個宣告變數的命令const,const和let都是在宣告的塊作用域中有效,但是let宣告的變數可變,值和型別都可以改變,沒有限制。const宣告額變數不能改變,所以,const一旦宣告乙個變數,就必須馬上初始化,不能留到以後賦值

const hehe; //報錯,missing initializer in const declaration

const a = 3;

a = 5; //報錯,uncaught typeerror: assignment to constant variable.

以上就是let和var在不同作用域下的區別

那麼在什麼情況下要用到let呢?

let 在塊作用域中有效,有的時候,我們為了降低變數汙染的風險,在塊作用域中使用let來代替var,這樣不會汙染塊作用域的外部作用域,降低 bug率,使**更安全。

JS中const var和let區別

今天遇到const定義的變數,查閱了相關資料整理了這篇文章。主要內容是 js中三種定義變數的方式const,var,let的區別。1.const定義的變數不可以修改,而且必須初始化。const b 2 正確 const b 錯誤,必須初始化 console.log 函式外const定義b b 有輸出...

js中let和var const的區別

es6中增加了let關鍵字以定義塊級作用域的變數 1.var可以重複宣告,後面的會覆蓋前面的,let不允許重複宣告,會直接報錯 var a 10 var a 20 20 console.log a let b 10 let b 20 identifier b has already been dec...

vue中let和var的區別

vue中 let 和 var 的區別 1 作用域不一樣 var是函式作用域,let是塊作用域 在函式中宣告了var,在整個函式中都是有效的,比如在函式中用for定義了乙個var變數,實際上在for迴圈外也能訪問,比如 1 for var i 0 i 2 i 23 45 i 6 278 9 12 10...