[Week 2] JavaScript - 變數、陣列、物件、== 與 ===


Posted by Mily on 2020-07-20

什麼是變數 ?

可以將變數想像成一個能夠裝東西的箱子,而這個箱子有一個名稱(如:box),裡面則有一些東西,而我們可以用幫箱子所取名的 box 來代指裡面儲存的東西。

變數型態

如果想查詢變數是什麼型態可以用 typeof + 變數 來查詢。

範例:

console.log(typeof 30),即得 number

Primitive

布林 boolean 數字 number 字串 string
true、false 50 "Hello"、'Hi'

在 JavaScript 中,變數的 = 並不是指數學符號的 =,指的是賦值

var a = 0
a = a + 5 // 這句話可省略成:a + = 5
a = a - 5 // 這句話可省略成:a - = 5

a++(就是 a+=1),a-- 反之

注意,++ 放前面或放後面的意思是不同的


陣列(Array)

一個陣列裡面可以放很多性質相同的東西

var score = [50, 80, 30, 100]
// score = 陣列名稱
// [] = 陣列裡的物件
使用範例:
console.log(score[0]),即得 50
// 這裡的 [0] 是索引值,需特別注意陣列的索引值是從 0 開始

如果想找出陣列的長度可以使用 .length


物件(Object)

(待補)


需注意變數運算小陷阱

注意一:型態

注意二:浮點數誤差

電腦在儲存小數點時沒有辦法真的很精準,所以會導致運算結果有些許誤差,詳情可以看 這篇 介紹

範例:
var a = 0.1 + 0.2
console.log(a == 0.3)
-----
結果會顯示 false

為什麼是 false 呢?
我們把 a 拆解來看:

console.log(a)
-----
電腦會顯示 0.3000000004
// 會有奇妙的誤差

因此在使用小數點時需特別注意,或盡量減少使用小數點


== 與 ===

在提 == 和 === 前,先來這段程式碼:

var a = 10
console.log(a = 1)

以這段程式碼來說,程式解讀的順序會是

先跑 a = 1
再跑 console.log(a)
所以最後 console.log 會得到 1

那如果是這段程式碼:

var a = 10 == 10
console.log(a)
=> 得到 true

因為程式會先從右邊執行到左邊,10 == 10true,故 a = true,但最好的方式還是自己用括弧框起來,如 var a = (10 == 10)

== 與 === 的差別

==(一般相等)

會先將值轉換成同個型別再比較,用來寫程式容易有 bug。

===(嚴格相等)

除了值以外,型態也一定要相同,否則會被視為不相等,強烈建議使用
=== 來寫程式就好。

console.log(0 == '0')
=> 得到 true

console.log(0 === '0')
=> 得到 false
console.log(0 == '')
=> 得到 true

console.log(0 === '')
=> 得到 false

(以上內容是我在 程式導師實驗計畫第四期 的學習紀錄,如有理解錯誤,歡迎糾正,謝謝:D)
資料來源:Lidemy


#javascript







Related Posts

一看就懂的 JSX 簡明入門教學指南

一看就懂的 JSX 簡明入門教學指南

MTR04_0727

MTR04_0727

Babel 入門:用 Babel 轉換太潮的 JavaScript

Babel 入門:用 Babel 轉換太潮的 JavaScript


Comments