# 六、沒那麼簡單:變數的運算 ###### tags: `JavaScript` `JS101` `2020六月第五週` `進度筆記` `Lidemy心得` `7/4` --- ## 1. 變數運算 基礎變數運算: var a = 10 var b = 20 console.log(a + b) // 結果會印出 30 。 --- ## 2. 其實要注意型態 如果運算的時候混了 primitive 的字串進去: var a = 10 var b = '20' // 這是字串 ' ' 。 console.log(a + b) // var a = '10' // 這是字串 ' ' 。 var b = 20 console.log(a + b) // 結果會印出 1020 , 因為如果 var b 將 '20' 理解成字串(文字)時,也會將 var a 理解成字串(文字) 。 ## 3. 字串可以轉成數字 可以用 Number( ) (Number 開頭 N 要大寫) 和 parseInt( ) (parseInt 開頭 p 要小寫) 來轉: var a = '10' var b = 20 console.log(Number (a) + b) // 或是 b 是字串的情況 , Number 要往後移; var a = 10 var b = '20' console.log(a + Number(b)) // 會印出 30 , 因為會像是文字連接,而不是數字相加; var a = '10' var b = 20 console.log(parseInt (a) + b) // (parseInt (a, 10) + b) 表示 a 這個數字回傳 10 進位,也可以傳其他進位制,不傳就會自己判斷; 或是 b 是字串的情況 , parseInt 要往後移; var a = 10 var b = '20' console.log(a + parseInt(b)) // 會印出 30 ; ## 4. 浮點數誤差 var a = 0.1 + 0.2 console.log(a == 0.3) // == 表示判斷這兩個東西是不是相等,但答案會是 false , 印出 a 會發現 小數點多了一點。 console.log(a)  大部分程式語言,會因為電腦存小數的時候無法存得很精準,所以相加會有誤差,可以的話盡量不要用到小數。 # 七、 == 與 === ## 1. 複習 一個 = 一個 = 是賦予值的意思,如: var a = 10 // 但如果改成 == var a == 10 // 會出錯不認得這符號。 ## 2. == 會判斷這兩個東西是否相等 如果用 == 就相當於等號,會檢查並判斷兩物是否相等,會先將比較值轉成同型態再作比較,但不會比較型態: var a = 10 console.log(a == 10) // 答案會是 true 。 var a = 10 console.log(a = 10) // console.log(a = 10) 這行少一個 = 的時候容易出 bug , 這時候會先執行 a = 10 , 並且把 a = 10 看作是 a == 10 再執行 console.log var a = 10 == 10 console.log(a) // 答案一樣會是 true , 執行順序一樣是從右到左 。 --- 最好的方式還是要用 作用範圍 ( ) 刮起來: var a = (10 == 10) console.log(a) // 答案會是 true 。 console.log(0 == '') // 會將 '' 轉成同型態,視為 0 , 因此答案會是 true。 ## 3. 如果是嚴格相等(三等或全等) === 和一般相等 == 差在哪裡 ? 如果用三個等號 === ,建議使用因為 debug 比較知道型態有沒有問題: var a = 10 console.log(a === 10) // 答案會是 true 。 三個等號 === 和兩個等號 == 差別差在型態,因為三個等號會檢查並比較左右兩邊的型態,而兩個等號不會檢查型態,用數字 0 與字串 '0' 相比,型態不同就會回傳 false 視為不相等: console.log(0 === '0') // 答案會是 false ,因為左邊是數字右邊是字串。 [參考來源:](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Equality_comparisons_and_sameness)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up