摘要:但是在使用運(yùn)算符時(shí),在這兩種情況下的工作方式是不同的。在中,數(shù)組不是基本類型,它的存在僅僅是一個(gè)糖衣語(yǔ)法,它其實(shí)是類的實(shí)例。然而,對(duì)于算數(shù)運(yùn)算符和表現(xiàn)的為數(shù)字。課外作業(yè)檢查其他的瀏覽器兼容性。
在 stackoverflow 上有人提問:arrays - Why does [1,2] + [3,4] = "1,23,4" in JavaScript?
問題我想將一個(gè)數(shù)組追加到另一個(gè)數(shù)組的后面,于是我在 firebug 編寫如下代碼:
[1,2] + [3,4]
但是,出乎意料,它卻輸出了:
"1,23,4"
而沒有輸出我期望的:
[1,2,3,4]
這是怎么回事呢?為什么 [1,2] + [3,4] 不等于 [1,2,3,4]?
解答JavaScript 的 + 運(yùn)算符有兩個(gè)目的:
將兩個(gè)數(shù)相加;
將兩個(gè)字符串連接。
規(guī)范并沒有定義 + 運(yùn)算符在數(shù)組上的行為,所以javascript 首先 把數(shù)組轉(zhuǎn)換成字符串,然后在字符串上進(jìn)行 + 運(yùn)算。
如果想連接兩個(gè)數(shù)組,可以使用數(shù)組的 concat 方法:
[1, 2].concat([3, 4]) // [1, 2, 3, 4]javascript 中的 + 運(yùn)算符概述
JavaScript 具有 6 種內(nèi)置 數(shù)據(jù)類型: (譯注:從給出的連接看,原作者的意思應(yīng)該是 原始類型系統(tǒng) 的數(shù)據(jù)類型,JavaScript 事實(shí)上有兩套類型系統(tǒng)。 第一套類型系統(tǒng)是用 typeof 來識(shí)別,稱之為原始(primitive)類型系統(tǒng),而第二套類型系統(tǒng)是以它為基礎(chǔ),從 object 這一種類型中發(fā)展起來的,即對(duì)象類型系統(tǒng),對(duì)象類型系統(tǒng)用 instanceof 來識(shí)別。@justjavac)
undefined
boolean
number
string
function
object
需要注意的是,null 和 [] 是兩個(gè)截然不同的類型,當(dāng)使用 typeof 運(yùn)算時(shí),它們卻都返回 object。 但是在使用 + 運(yùn)算符時(shí),在這兩種情況下的工作方式是不同的。
在JavaScript 中,數(shù)組不是基本類型,它的存在僅僅是一個(gè)糖衣語(yǔ)法,它其實(shí)是 Array 類的實(shí)例。(ps:function 其實(shí)也是 Function 類實(shí)例的糖衣語(yǔ)法。)
如果說道現(xiàn)在你腦子還是清醒的,是時(shí)候加點(diǎn)兒猛料了。javascript 的對(duì)象包裝器類型例如 new Number(5), new Boolean(true) 和 new String("abc") 也都是 object 類型,它們不是數(shù)字,布爾,字符串。然而,對(duì)于算數(shù)運(yùn)算符 Number 和 Boolean 表現(xiàn)的為數(shù)字。
還記得我前面說過的 + 運(yùn)算符嗎?它的操作對(duì)象是 數(shù)字和字符串,也就是 Number,Boolean,String 或者 number,boolean,string。
下面的表格就是 + 運(yùn)算符對(duì)于不同類型進(jìn)行運(yùn)算后,得到的結(jié)果類型
---------------------------------------------------------------------------------------- | undefined | boolean | number | string | function | object | null | array ---------------------------------------------------------------------------------------- undefined | number | number | number | string | string | string | number | string boolean | number | number | number | string | string | string | number | string number | number | number | number | string | string | string | number | string string | string | string | string | string | string | string | string | string function | string | string | string | string | string | string | string | string object | string | string | string | string | string | string | string | string null | number | number | number | string | string | string | number | string array | string | string | string | string | string | string | string | string -------------------------------------------------------------------------------------------
本表適用于 Chrome 13, Firefox 6, Opera 11 and IE9。課外作業(yè):檢查其他的瀏覽器兼容性。
注意:用戶自定義對(duì)象進(jìn)行 + 運(yùn)算不一定總產(chǎn)生一個(gè)字符串結(jié)果。這主要取決于 對(duì)象類型到原生類型轉(zhuǎn)換 的實(shí)現(xiàn)方式。
例如:
var o = { valueOf : function () { return 4; } };
計(jì)算 o + 2 將得到 6, 是一個(gè)數(shù)字 number;計(jì)算 o + "2" 得到 "42", 是一個(gè)字符串 string。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/77928.html
摘要:但是在使用運(yùn)算符時(shí),在這兩種情況下的工作方式是不同的。在中,數(shù)組不是基本類型,它的存在僅僅是一個(gè)糖衣語(yǔ)法,它其實(shí)是類的實(shí)例。然而,對(duì)于算數(shù)運(yùn)算符和表現(xiàn)的為數(shù)字。注意用戶自定義對(duì)象進(jìn)行運(yùn)算不一定總產(chǎn)生一個(gè)字符串結(jié)果。 問題 我想將一個(gè)數(shù)組追加到另一個(gè)數(shù)組的后面,于是我在 firebug 編寫如下代碼: [1,2] + [3,4] 但是,出乎意料,它卻輸出了: 1,23,4 而沒有輸出我期...
摘要:變量名必須以字母美元符號(hào)下劃線開始,只能包含字母數(shù)字下劃線和美元符號(hào)。你有元現(xiàn)在是第年小練習(xí)計(jì)算從和增長(zhǎng)到自身的倍需要的次數(shù)。 2.3 程序的構(gòu)成 表達(dá)式,用于計(jì)算并得到值; 變量,用于保存數(shù)據(jù),以便將來使用; 語(yǔ)句,用于執(zhí)行腳本的操作; 2.3.1 表達(dá)式 2 2+8.1+5 (2+8.1)* 5 9>4 9>4 && 1===2 dog+house Hello.length ...
摘要:如果返回值是一個(gè)原始值,則返回這個(gè)原始值。如果或者中的任意一個(gè)為字符串,則將另外一個(gè)也轉(zhuǎn)換成字符串,然后返回兩個(gè)字符串連接操作后的結(jié)果。因此,的結(jié)果實(shí)際上是兩個(gè)空字符串的連接。 原文:What is {} + {} in JavaScript? 譯者:justjavac 最近,Gary Bernhardt 在一個(gè)簡(jiǎn)短的演講視頻Wat中指出了一個(gè)有趣的 JavaScript 怪癖...
摘要:如果參數(shù)不在與之間,該方法將返回一個(gè)空字符串這個(gè)不解釋了方法用于在字符串中用一些字符替換另一些字符,或替換一個(gè)與正則表達(dá)式匹配的子串。 主要總結(jié) JavaScript的六種數(shù)據(jù)類型:Boolean、Number、String、Null、Undefined、Object 布爾類型 布爾真假判定:短路原則 x && y 只有在x和y都為真的情況下為真。即真真為真,短路:因比較運(yùn)算為左...
摘要:調(diào)用堆棧是存放原始數(shù)據(jù)類型的地方除了函數(shù)調(diào)用之外。上一節(jié)中聲明變量后調(diào)用堆棧的粗略表示如下。解釋改變的正確方法是更改內(nèi)存地址。在聲明時(shí),將在調(diào)用堆棧上分配內(nèi)存地址,該值是在堆上分配的內(nèi)存地址。 這是專門探索 JavaScript 及其所構(gòu)建的組件的系列文章的第 21 篇。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 如果你錯(cuò)過了前面的章節(jié),可以在這里找到它們:...
閱讀 3080·2021-11-24 10:47
閱讀 3831·2021-11-02 14:43
閱讀 2228·2021-09-26 10:15
閱讀 2253·2021-09-08 09:35
閱讀 560·2019-08-30 12:45
閱讀 2781·2019-08-29 17:04
閱讀 3214·2019-08-26 14:05
閱讀 1259·2019-08-26 12:10