以前我們在宣告時只有一種方法,就是使用var來進行宣告,es6對宣告的進行了擴充套件,現在可以有三種宣告方式了。
字面理解es6的三種宣告方式:
var
:它是variable的簡寫,可以理解成變數的意思。
let
:它在英文中是「讓」的意思,也可以理解為一種宣告的意思。
const
:它在英文中也是常量的意思,在es6也是用來宣告常量的,常量你可以簡單理解為不變的量。
var在es6裡是用來公升級全域性變數的,我們可以先作乙個最簡單的例項,用var宣告乙個變數a,然後用console.log進行輸出。
var a='rong';console.log(a); //rong
我們可以看到rong在控制台已經被列印出來了。那如何理解它的作用是宣告全域性變數那?我們用匿名函式給他進行乙個包裹,然後在匿名函式中呼叫這個a變數,看看能不能呼叫到。
var a="rong";window.onload= function()
可以看到控制台輸出了rong,這證明var確實是全域性的。如果你覺的這個不夠直觀說明var是全域性宣告,還可以用區塊的方式進行呼叫測試,先看下面的**。
var a=2;console.log(a); //3
這時列印出來的值是多少那?對,應該是3,因為var是全域性宣告的。
通過兩個簡單的例子,我們對var的全域性宣告有了一定了解。那跟var向對應的是let,它是區域性變數宣告。還是上面的例子,我們試著在區塊裡用let宣告。
var a=2;console.log(a); //2
這時候控制台列印出來的值就是2了。如果我們只在區塊裡宣告,不再外部宣告,我們列印a時就會報錯,顯示找不到變數。
console.log(a); //a is not defined
上面兩個例子說明了let是區域性變數宣告,let宣告只在區塊內起作用,外部是不可以呼叫的。
for(let i=0;i<10;i++)console.log('迴圈體外:'+i);
你執行時會發現控制台報錯了,找不到迴圈體外的i變數。通過兩種宣告的比較,可以明白let在防止程式資料汙染上還是很有用處的。我們要努力去習慣用let宣告,減少var宣告去汙染全域性空間,在vue的使用中也要注意這點。
在程式開發中,有些變數是希望宣告後在業務層就不再發生變化了,簡單來說就是從宣告開始,這個變數始終不變,就需要用const進行宣告。
我們來一段用const宣告錯誤的**,在錯誤中學習const的特性也是非常好的。
const a="rong";var a='蓉';
console.log(a);
在編譯這段**的過程中,你就會發現已經報錯,無法編譯了,原因就是我們const宣告的變數是不可以改變的。const是很好理解的
1. var 跟 let 上面的變數是可以重複宣告並且可以重複定義
2. var 在函式內宣告,只能在函式作用域中使用(假設在if語句中宣告,var還是屬於全域性的)
3. let 跟 const 是塊級作用域中宣告的,
4. const 宣告的變數是不能修改的,但是變數的屬性是能夠重新賦值的,假設連屬性也不許給他修改,那會用到es5中的方法
const wangrong =const wangrong = object.freeze(person);
ES6之新的變數宣告方式
作用域就是變數的有效範圍 之前只有全域性作用域和函式作用域 let和const是新的變數宣告方式 輸出結果 使用let定義的變數只能用在定義它的那個塊裡 在這個塊之外是不能使用這個變數的 就是將宣告的變數繫結在宣告該變數的塊裡 同理 可以看做為最簡單的塊級元素 大括號外當然也訪問不到 輸出結果 因為...
ES6 變數宣告方式
var,function,let,const,import,class1.let只在所在的 塊中有效 2.以前我們需要用iife解決的問題 3.不存在變數宣告提公升 4.暫時性死區tdz 1.let只在所在的 塊中有效 2.以前我們需要用iife解決的問題 3.不存在變數宣告提公升 console....
ES6的變數宣告方式
保留了var和function。新增加了let const class和import。而且,let const class宣告的全域性變數再也不會和全域性物件的屬性掛鉤了。let 1 let只在所在的 塊中有效 for var i 0 i 10 i console.log i 10 for let ...