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