let和var定義變數的區別

2021-09-12 12:34:42 字數 1141 閱讀 9341

一、let不能在js中使用,是es6的語法,需要在js中使用就必須使用嚴格模式:'use strict';

二、宣告後未賦值,表現相同

var vartest;

let lettest;

console.log(vartest); //輸出undefined

console.log(lettest); //輸出undefined

也即是說宣告後直接使用輸出都是一樣的undefined

三、使用未宣告的變數,不同

console.log(vartest); //輸出undefined(注意要注釋掉下面一行才能執行)

console.log(lettest); //直接報錯:referenceerror: lettest is not defined

直接使用沒有宣告的變數,let直接報錯,var的提示未定義:undefined

四、重複宣告同乙個變數的時候,不同

var vartest = 'test var ok.';

let lettest = 'test let ok.';

var vartest = 'vartest changed.';

let lettest = 'lettest changed.'; //直接報錯:syntaxerror: identifier 'lettest' has already been declared

console.log(vartest); //輸出vartest changed.(注意要注釋掉上面lettest變數的重複宣告才能執行)

console.log(lettest);

var 重複宣告,第二次宣告會覆蓋第一次宣告的值

let重複宣告會報錯

五、變數作用域不同

console.log(vartest); //輸出"vartest changed.",內部"{}"中宣告的vartest變數覆蓋外部的lettest宣告

console.log(lettest); //輸出"test let ok.",內部"{}"中宣告的lettest和外部的lettest不是同乙個變數

}大括號包裹的是乙個作用域,不同;作用域let宣告的變數只在當前的作用域裡面有用,和另乙個作用域裡面的let宣告的變數是兩個不同的變數,互相不會有影響

而var的宣告的是全域性的變數

js中let和var定義變數的區別

let變數之前沒見過,剛遇到,探 竟。以下 function function function function console.log vartest 輸出 vartest changed.內部 中宣告的vartest變數覆蓋外部的lettest宣告 console.log lettest 輸出...

js中let和var定義變數的區別

也就是說,在函式內宣告了var,整個函式內都是有效的,比如說在迴圈內定義了乙個var變數,實際上其在迴圈以外也是可以訪問的,而let由於是塊作用域,所以如果在塊作用域內 比如說迴圈內 定義的變數,在其外面是不可被訪問的,所以let用在for let i i n i 是一種很推薦的寫法。也就是說,le...

let 和 var 的區別

1 作用域只侷限於當前 塊 if true console.log str console.log str1 str1 is not defined2 let宣告的作用於不會被提公升 console.log str var str 1 console.log str1 str1 is not def...