let 與 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 bar = 'hehe'; // 函式作用域中的變數
var baz = 'lala'; // 函式作用域中的變數
}
塊作用域
在塊作用域中兩者的區別較為明顯, let只在for()回圈中可用,而 var是對于包圍for回圈的整個函式可用
function aFun1(){
// i 對于for回圈外的范圍是不可見的(i is not defined)
for(let i = 1; i<5; i++){
// i只有在這里是可見的
}
// i 對于for回圈外的范圍是不可見的(i is not defined)
}
function aFun2(){
// i 對于for回圈外的范圍是可見的
for(var i = 1;i<5; i++){
// i 在for 在整個函式體內都是可見的
}
// 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.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/458233.html
標籤:Html/Css
下一篇:空間轉換/影片
