国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

詳解JavaScript中的強(qiáng)制類(lèi)型轉(zhuǎn)換

2024-05-06 15:40:37
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

avaScript 原語(yǔ)

JavaScript 建立在一系列基本單元之上。你應(yīng)該對(duì)其中的一些已經(jīng)很熟悉了,比如字符串和數(shù)字:

var greet = "Hello";var year = 89;

字符串和數(shù)字是該語(yǔ)言所謂“原語(yǔ)”的一部分。完整清單是:

    String Number Boolean Null Undefined Object Symbol (ES6中添加,此處不予介紹)

布爾值用來(lái)表示可能是真或假的值。 null 是故意不去賦值,它通常被分配給一個(gè)變量,用于表示綁定完畢,稍后將填充有意義的內(nèi)容。

var maybe = null;

然后才是 undefined,這意味著變量仍然沒(méi)有被附加上:

var name;console.log(name)undefined

null 和 undefined 看起來(lái)非常相似,但它們是兩個(gè)截然不同的實(shí)體,很多開(kāi)發(fā)人員仍然不確定應(yīng)該使用哪個(gè)。

如果要判斷 JavaScript 實(shí)例的類(lèi)型,可以用 typeof 運(yùn)算符。讓我們用字符串嘗試一下:

typeof "alex"> "string"

還有數(shù)字:

typeof 9> "number"

用于布爾值:

typeof false> "boolean"

undefined:

typeof undefined> "undefined"

還有 null:

typeof null> "object"

結(jié)果令人驚訝! null 看起來(lái)像一個(gè)對(duì)象,但實(shí)際上它是 JavaScript 中的一個(gè)歷史性錯(cuò)誤,自語(yǔ)言誕生就躺在那里了。 由于這些問(wèn)題,JavaScript 一直聲名狼借。但這僅僅是個(gè)開(kāi)始。

陌生的事情

在 JavaScript 中,在兩種類(lèi)型之間進(jìn)行轉(zhuǎn)換時(shí)有一些奇怪的規(guī)則。讓我給你一些背景信息。先用 Python 舉一個(gè)例子。 在 Python 中執(zhí)行以下指令:

'hello' + 89

會(huì)給你一個(gè)明確的錯(cuò)誤:

TypeError: can only concatenate str (**not** "int") to str

而在 JavaScript 中,只有天空才是你的極限:

'hello' + 89

事實(shí)上給出:

"hello89"

 如果我們嘗試向字符串添加數(shù)組,看起來(lái)會(huì)更加奇怪:

'hello' + []

將會(huì)得到

 'hello'

 還有

'hello' + [89]

 會(huì)給你一個(gè)驚喜:

 "hello89"

 看起來(lái)這種轉(zhuǎn)換背后存在某種邏輯。它甚至適用于存在更多元素的 array :

'hello' + [89, 150.156, 'mike']

得到:

"hello89,150.156,mike"

 這兩行 JavaScript 足以讓 Java 程序員逃離。但是這種行為在 JavaScript 中 100% 是又意義的。因此這種隱式轉(zhuǎn)換,也稱(chēng)為強(qiáng)制類(lèi)型轉(zhuǎn)換是非常值得探索的。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 南宁市| 河南省| 西峡县| 杂多县| 宝鸡市| 陕西省| 宣汉县| 马边| 华安县| 裕民县| 大方县| 时尚| 略阳县| 礼泉县| 突泉县| 淳安县| 阿图什市| 周宁县| 上饶县| 保康县| 耒阳市| 镇江市| 赤水市| 股票| 通州区| 星子县| 佛山市| 腾冲县| 民丰县| 卓尼县| 合肥市| 仁寿县| 四平市| 阳原县| 铜陵市| 双峰县| 西贡区| 凉山| 历史| 乌兰察布市| 行唐县|