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

<<:  Day04 - Laravel 档案架构

>>:  Day02【JS】Event Delegation 事件委派

所学跟工作结合时---我用JS画了12个班级的座位表

来到铁人赛的最後一篇! 走到现在,人生中如果能学以致用,真的很幸福~虽然心中有过无数将网页开发结合到...

见习村29 - Sum of Intervals

29 - Sum of Intervals Don't say so much, just codi...

[Day 28] 来做一个人脸互动的程序吧!

在我完成人脸关键点与人脸对齐的学习後,觉得眼睛有点累想要休息 -- 这时一个应用就出来了! 我们每...

Day 07 关键字分析工具介绍

我们前面几章提到关键字的规划原则,我们都很有共识,关键字是要依据潜在消费者的搜寻需求所拟定出来的。 ...

Day 06:Debug

前言 为什麽要把 debug 拿出来说呢? 我发现其实 debug 的流程比较少人讨论, 一般我们会...