「我想確認一下,入門魔法都是加 100 魔力總量嗎?」
艾草:「對唷!之後有中階魔法加比較多。」
「那如果想放炫酷的魔法,大概要多少魔力總量呀?」

艾草:「 ........。」
(一陣詭異的靜默後)
艾草:「 先求有,再求好,總之我們先來學變數宣告吧!」
「 欸欸,我說好歹先回答我吧!等等,不要無視人家啦~~~~~」
今天來介紹如何宣告變數吧!
你可以使用 let 、 const 、var 來宣告變數,那三者有何差異呢?
首先,我們先來談談 ES6 才新增的宣告方式 let 、 const , 與 var 不同的地方在 let 、 const 作用域在區塊,區塊指的是大括號 {} 內,例如if 、for 迴圈等,而 var 的最小切分單位為 function。
如何用 let 宣告一個變數,讓我們用生活情境水果攤來發想。
今天你走到一個水果攤,看到好新鮮的蘋果,一顆 30 元,你決定使用變數把它記錄下來!
let applePrice = 30;
這樣就完成了用 let 宣告變數了,但用 let 也會有要注意的地方,像是你今天已經宣告過一樣名稱的變數,如果在重複宣告一次的話,會報錯!
let applePrice = 30;
//Uncaught SyntaxError: Identifier 'applePrice' has already been declared
let applePrice = 50;
但我們都知道的,水果售價常常變動,如果我們不能重複宣告,要怎麼改售價呀?
你可以這樣寫:
applePrice = 50;
這樣寫就是重新賦予 applePrice 這個變數50元,所以我們知道 let 是可以重新賦予值的唷!
let 知識點:
let 的作用域在區塊內let 不能重複宣告let 可以重新賦予值在同一個作用域下使用 let 的方式不能重複宣告,請特別留意這一點!
const 跟 let 有何不同呢?讓我們一樣透過生活情境來發想吧!
但這次不用水果攤來發想了,因為水果物價波動很大,不太適合使用 const 宣告,我們就用大家巷口總在萬年打九折的店來宣告吧!
const sale = 0.9;
為什麼要用 const 來宣告很少變動的情境呢?因為與 let 不同的地方在, const 的值如果為基本型別的情況下,無法被重新賦予值,如下:
const applePrice = 30;
applePrice = 50; //Uncaught TypeError: Assignment to constant variable.
所以可以使用 const 來存放一些不容易被更動的變數。
想當然 const 也是無法被重新宣告的唷。
const sale = 0.9;
//Uncaught SyntaxError: Identifier 'sale' has already been declared
const sale = 0.8;
const 還有值得注意的一點是,必須要給予值,如果不賦予值會報錯,如下:
const sale;//Uncaught SyntaxError: Missing initializer in const declaration
const 知識點:
const 要給予值const 不能重複宣告const 在原始型別難以被重新賦予值最後不得不提一下 var ,在 ES6 後新增了 let 、 const 宣告方式後,就很少使用到 var 了。var 的宣告方式其實最寬鬆,它可以被重新賦予值、也可以重新被宣告。
var a = 2;
var a = 3;
你可能會遇到以下情況:
當你開心的寫 Code 結果不小心宣告了一樣的變數名稱時:
這是你:咦,哪泥?為啥剛剛寫好的地方怪怪的Σ( ° △ °|||)
還是你:我看一切都很正常呀 (@~@)?
最後發現!!!
原來是這個變數命名過了呀 (╯°Д°)╯︵┻━┻
而且 var 還有一個問題,那就是他會污染全域,關於區域跟全域的概念留待後續的文章。
var 踩雷點:
var 可以重複宣告var 可以重新賦予值var 可以鍛鍊你的心性,讓你成為更好的人(誤作用域:
let 、 const 的作用域為區塊作用域var 的作用域為函式作用域重複宣告:
let 、 const 不能重複宣告var 可以重複宣告重新賦予原始型別的值:
var 、let 可以重新賦予原始型別的值const 不能重新賦予原始型別的值請問以下何種宣告方式會報錯呢?
//1
let a = 1;
a = 2;
//2
const b;
//3
let c = 3;
let c = 4;
//4
const d = 5;
d = 6;
//5
var e = 1;
var e = 2;
下一篇讓我們了解運算子的優先性與相依性吧!
JavaScript 必修篇 - 前端修練全攻略(六角學院)