国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

在 javascript 中,為什么 [1,2] + [3,4] 不等于 [1,2,3,4]?

MRZYD / 2238人閱讀

摘要:但是在使用運(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)算符 NumberBoolean 表現(xiàn)的為數(shù)字。

還記得我前面說過的 + 運(yùn)算符嗎?它的操作對(duì)象是 數(shù)字和字符串,也就是 NumberBooleanString 或者 numberbooleanstring

下面的表格就是 + 運(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

相關(guān)文章

  • javascript 什么 [1,2] + [3,4] 等于 [1,2,3,4]?

    摘要:但是在使用運(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 而沒有輸出我期...

    sydMobile 評(píng)論0 收藏0
  • JavaScript程序設(shè)計(jì)》—— 第二章 編程

    摘要:變量名必須以字母美元符號(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 ...

    sean 評(píng)論0 收藏0
  • JavaScript,{}+{} 等于多少?

    摘要:如果返回值是一個(gè)原始值,則返回這個(gè)原始值。如果或者中的任意一個(gè)為字符串,則將另外一個(gè)也轉(zhuǎn)換成字符串,然后返回兩個(gè)字符串連接操作后的結(jié)果。因此,的結(jié)果實(shí)際上是兩個(gè)空字符串的連接。 原文:What is {} + {} in JavaScript? 譯者:justjavac 最近,Gary Bernhardt 在一個(gè)簡(jiǎn)短的演講視頻Wat中指出了一個(gè)有趣的 JavaScript 怪癖...

    Jrain 評(píng)論0 收藏0
  • JavaScript程序設(shè)計(jì)》—— 第三章 數(shù)據(jù)章 總結(jié)及練習(xí)

    摘要:如果參數(shù)不在與之間,該方法將返回一個(gè)空字符串這個(gè)不解釋了方法用于在字符串中用一些字符替換另一些字符,或替換一個(gè)與正則表達(dá)式匹配的子串。 主要總結(jié) JavaScript的六種數(shù)據(jù)類型:Boolean、Number、String、Null、Undefined、Object 布爾類型 布爾真假判定:短路原則 x && y 只有在x和y都為真的情況下為真。即真真為真,短路:因比較運(yùn)算為左...

    W4n9Hu1 評(píng)論0 收藏0
  • JavaScript 是如何工作的:JavaScript 的內(nèi)存模型

    摘要:調(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é),可以在這里找到它們:...

    baoxl 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<