iT邦幫忙

2021 iThome 鐵人賽

DAY 3
0
自我挑戰組

追憶JS年華系列 第 3

Day-03 JavaScript資料型別(2)

資料型別:字串

JavaScript的字串(string)以單引號(‘ ’)或雙引號(“ ”)包住,與一般書面語(「我是書面語」)相同,開頭與結尾必須一致。

若字串中本身另有引號,將會導致程式出錯,因為引號在此不會被當作「字串內容」的一部分。此時,使用跳脫字元=反斜線(\)可避免此一問題。

例:不同引號的字串

let str1 = ‘我是字串一號’
let str2 = “我是字串二號”

例:英文撇號(apostrophe)與引號的衝突

let str3 = ‘I’m so surprised’ //單引號中有單引號(撇號),會出錯,第一個 ’會被當成字串結尾
let str4 = “I’m so surprised” //雙引號中有單引號(撇號),無妨

若str3 非用不可,就在書面用的 ’加上跳脫字元

`let str3 = ‘I\’m so surprised’ `

此外,多組字串、多行字串間還能互相連結。

let goodNews = “This news shocked the world,” + “I’m so surprised.” 
//多組連結
let bigNews = “
    This news shocked the world, \
	I’m so surprised. \
	Scientists have found the antidote to the plague.	” 
	//多行連結,但跳脫字元後必須淨空

資料型別:樣板字面值

現行JavaScript最新版本包括一種特殊字串—-樣板字面值(template literal)。樣板字面值係由字串、$、{}與一組反引號所組成,能使字串運用的靈活性更大。

藉由它,原本的多行字串可更加簡潔,不需要跳脫字元也能連結。

let bigNews = `
	This news shocked the world, 
	I’m so surprised.
	Scientists have found the antidote to the plague. `

復次,也能插入變數,令原本須多組字串連結的程式碼,用一行完結。

let money = 500
let str5 = “The book is priced at ${money} yuan.”

console.log(str5);
//印出 The book is priced at 500 yuan.

資料型別:數字

數字是JavaScript唯一屬於數值的資料型別,包括整數、浮點數皆屬此類。

let num1 = 333
let num2 = 333.1416

在繼續說明之前,必須先揭示「數字」與「字串」間的一種特質。誠如所知,數字 + 數字 = 數字,但在JavaScript中,「數字 + 字串」會自動轉為「字串 + 字串」,形成相當反直覺的效果。比如:

console.log(1+“2”)
//數字1加字串2,印出12

換言之,字串可以表現為文字(字母)或數目字,相加的結果,就是字面意義上的相加。

在數字的資料型別中,非數字(NaN)也是另一種數字。儘管在字面上不是數字(Not a Number),但在運算子(後續介紹)typeof的判斷中, NaN仍是一種number。這無意間創造了有名的「香蕉」趣談,即:

document.write(('b' + 'a' + + 'a' + 'a').toLowerCase());
//印出 "banana"

直覺上,本例應該印出是「baaa」的結果。但由於程式碼中的 +'a' 會被解析為非數字,也就是NaN,因此會印出「baNaNa」,再經由toLowerCase() 轉為全部小寫的「banana」。

本質上,NaN無法參加任何數學運算,它不等於任何數值,也不等於NaN自己,因此無法運用a === NaN 的方式判斷變數a是否為NaN。遇此情形,可使用 isNaN(value) 函式帶入想檢測的值(value)加以判斷之。

此外,還有相當少用的無限大(Infinity)、負無限大(-Infinity),比如任何正數除以0得到無限大,任何負數除以0得到負無限大。此不詳敘。


資料型別:布林值

布林值是運用最廣泛的電腦邏輯資料型別之一,得名自發明人喬治·布爾(George Boole)。它只包含 true(正確) 與 false(錯誤) 兩種值,因此常用於真假判斷、流程控制與與例外處理。有關詳情,後續將陸續為文。最簡單狀態如:

let a = ( 50 < 500 )
//得出的布林值為true

上一篇
Day-02 JavaScript資料型別(1)
下一篇
Day-04 JavaScript資料型別(3)
系列文
追憶JS年華30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言