js基本數(shù)據(jù)類型的七十二變

js中數(shù)據(jù)類型分為兩種,第一種基本的數(shù)據(jù)類型:Number醉者,String但狭,Boolean,Null撬即,Undefiend立磁;

第二種是復(fù)雜的數(shù)據(jù)類型,統(tǒng)稱object(引用類型)剥槐。


簡單說一下基本數(shù)據(jù)類型唱歧,不詳細(xì)介紹了


js中的number

JavaScript不區(qū)分整數(shù)和浮點數(shù),統(tǒng)一用Number表示粒竖,例如:

1 ?//整數(shù)1

3.1415926 ?//小數(shù)

-12312 //負(fù)數(shù)

1.23798e12 ?//科學(xué)計數(shù)法

特殊的number類型

NaN //NaN表示Not a Number颅崩,當(dāng)無法計算結(jié)果時用NaN表示

Infinity ?// Infinity表示無限大,當(dāng)數(shù)值超過了JavaScript的Number所能表示的最大值時蕊苗,就表示為Infinity

js中的string

"sdadasd" //字符串sdadasfd沿后,用單引號或者雙引號包裹起來

js中的boolean

true //true,正確

false ?//false , 錯誤

js中的null和undifined

null ?//空值

undifined ?//未定義

下面介紹一下強(qiáng)制類型轉(zhuǎn)換

Number(obj) ?// 把obj轉(zhuǎn)化為number,如果沒辦法轉(zhuǎn)為number岁歉,則返回NaN得运,parseInt()和parseFloat()也是這樣膝蜈,下文有詳細(xì)介紹

toString(obj) ?// 把obj轉(zhuǎn)化為字符串

Boolean(obj) ?//把obj轉(zhuǎn)化為布爾值

轉(zhuǎn)換規(guī)則

Boolean(undefined):false

Number(undefined):NaN

String(undefined):'undefined'

Boolean(null):false

Number(null):0

String(null):'null'

Number(true): 1 || Number(false) : 0

String(true):'true' || String(false):'false'

Boolean(undefined):false

Boolean(null):false

Boolean(非空對象包括空數(shù)組[]和空對象{}):true

Boolean(非0): true || Boolean(0和NaN):false

Boolean(非空包括空格字符串):true || Boolean(''):false

Number(true):1 || Number(false):0

Number(各種進(jìn)制的數(shù)字):運算后的十進(jìn)制的數(shù)字,如1.0或1.或01會以1輸出

Number(undefined):NaN

Number(null):0

Number(字符串):

Number(只包含數(shù)字的十進(jìn)制和十六進(jìn)制的字符串):運算后的十進(jìn)制的數(shù)字

[注意]字符串中不識別八進(jìn)制熔掺,按照十進(jìn)制數(shù)字處理

Number(''和' '):0

Number(其他情況的字符串):NaN

Number(對象):

Number([]和[0]和[-0]):0

Number([數(shù)字]):運算后的數(shù)字

Number([1,2]和{}和其他對象):NaN

下面看一些表達(dá)式計算結(jié)果

3>2 ?//false

'2'!==2 ?//false

'2'!===2 ?//true

Infinity==Infinity //true

NaN==NaN ?//false

null==undefined ?//true

null===undefined ?//false

1==true ?//true

1===true //false

'1'==true ?//true

'1'===true ?//false

js中的運算


算術(shù)運算符


賦值運算符

js中的運算符優(yōu)先級

運算符 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 說明

.[ ] ( ) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 字段訪問饱搏、數(shù)組索引、函數(shù)調(diào)用和表達(dá)式分組

++ — – ~ ! ? ? ? ? ? ? ?delete new typeof void一元運算符置逻、返回數(shù)據(jù)類型推沸、對象創(chuàng)建、未定義的值

* / % ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 相乘券坞、相除鬓催、求余數(shù)

+ – + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?相加、相減恨锚、字符串串聯(lián)

<< >> >>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?移位

< <= > >= instanceof ? ? 小于宇驾、小于或等于、大于猴伶、大于或等于课舍、是否為特定類的實例

== != === !== ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?相等、不相等他挎、全等筝尾,不全等

& ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 按位“與”

^ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?按位“異或”

| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?按位“或”

&& ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 邏輯“與”

|| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?邏輯“或”

?: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?條件運算

= OP= ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?賦值、賦值運算(如 += 和 &=)

, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?多個計算

js中的隱式轉(zhuǎn)換

console.log("-------以下乘法---------");

console.log(5*"5");//25

console.log(5*"a");//nan

console.log(5*NaN);//nan

console.log(5*null);//0

console.log(5*undefined);//nan

console.log(5*5);//25

console.log("-------以上乘法---------");

// 1办桨、如果2個數(shù)值都是數(shù)字筹淫,那么直接進(jìn)行乘法運算,(相信大家都會的呢撞,和小學(xué)數(shù)學(xué)一樣损姜,同時要注意數(shù)字的符號),如果乘積數(shù)值超過了ECMAscript的數(shù)值表示范圍殊霞,則返回Infinity(正無窮)或者-Infinity(負(fù)無窮)

//? 2薛匪、如果一個數(shù)是NaN,那么結(jié)果就是NaN

// 3、如果Infinity與0相乘脓鹃,結(jié)果是NaN

// 4、假如一個操作符是數(shù)字古沥,另外一個不是數(shù)值瘸右,那么先用Number()函數(shù),將其進(jìn)行轉(zhuǎn)化岩齿,將轉(zhuǎn)化出來的值與數(shù)字進(jìn)行相乘太颤。假如轉(zhuǎn)換出來的結(jié)果出現(xiàn)NaN,那么結(jié)果就是NaN盹沈。

//除法

console.log("-------以下除法---------");

console.log(5/"5");//1

console.log(5/"a");//nan

console.log(5/NaN);//nan

console.log(5/null);//in

console.log(null/5);//0

console.log(5/undefined);//nan

console.log(5/5);//1

console.log(5/0);//in

console.log(0/5);//0

console.log(0/0);//nan

console.log("-------以上除法---------");

// 和乘法類似龄章,唯一多的一條就是0/0結(jié)果是NaN

//取余吃谣、求模

console.log("-------以下取余、求模--------");

console.log(16%"5");//1

console.log(5%"a");//nan

console.log(5%NaN);//nan

console.log(5%null);//nan

console.log(null%5);//0

console.log(5%undefined);//nan

console.log(5%5);//0

console.log(5%0);//nan

console.log(0%5);//0

console.log(0%0);//nan

console.log("-------以上取余做裙、求模---------");

// 1岗憋、被除數(shù)是無窮大,除數(shù)是有限大的值锚贱,那么結(jié)果是NaN

// 2仔戈、被除數(shù)是有限大的值,除數(shù)是0拧廊,那么結(jié)果是NaN

// 3监徘、Infinity%Infinity結(jié)果是NaN

// 4、被除數(shù)是有限大的值吧碾,除數(shù)是無窮大的值凰盔,結(jié)果是被除數(shù)。

// 5倦春、被除數(shù)是0户敬,結(jié)果是0

//加法

console.log("-------以下加法--------");

console.log(16+"5");//165

console.log(5+"a");//5a

console.log(5+NaN);//nan

console.log("5"+null);//

console.log(5+undefined);//nan

console.log(5+5);//10

console.log("兩個數(shù)的和是"+5+5);//55

console.log("兩個數(shù)的和是"+(5+5));//10

console.log("-------以上加法--------");

//? 1、有一個是字符串溅漾,那么另外一個也會轉(zhuǎn)換為字符串進(jìn)行拼接山叮。假如一個是字符串,另外一個是null或者undefined添履,那么相加屁倔,null或者undefined就會調(diào)用String()方法,獲得字符串“null”或者“undefined”暮胧,然后進(jìn)行拼接锐借。

// 2、假如一個數(shù)字加null或者undefined往衷,那么還是把null或者undefined進(jìn)行Number()轉(zhuǎn)換之后再相加钞翔。

// 3、剩下的原則和其他的差不多席舍,就不多說了布轿。

//減法

console.log("-------以下減法--------");

console.log(16-"5");//11

console.log(typeof 16-"5");

console.log(5-"a");//nan

console.log(5-NaN);//nan

console.log(5-null);//5

console.log(5-undefined);//nan

console.log(5-5);//0

console.log(5-true);//4

console.log(5-"true");//nan

console.log(5-"");//5

//alert(Number('sds'));nan

// alert(Number(''));//0

console.log("兩個數(shù)的差是"+5-5);//nan

console.log("兩個數(shù)的差是"+(5-5));//shi0

console.log("-------以上減法--------");

// 1、Infinity-Infinity結(jié)果是NaN

// 2来颤、-Infinity-Infinity結(jié)果是-Infinity

// 3汰扭、一個數(shù)字減Infinity結(jié)果是-Infinity

// 4、Infinity-(-Infinity)結(jié)果是Infinity

// 5福铅、如果操作數(shù)是對象萝毛,則調(diào)用對象valueOf方法,如果結(jié)果是NaN那么結(jié)果就是NaN滑黔。如果沒有valueOf方法笆包,那么調(diào)用toString()方法环揽,并將得到的字符串轉(zhuǎn)換為數(shù)值。

總結(jié)

js隱式轉(zhuǎn)化有很多坑庵佣,盡量用===替代==

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末歉胶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子秧了,更是在濱河造成了極大的恐慌跨扮,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件验毡,死亡現(xiàn)場離奇詭異衡创,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)晶通,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門璃氢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人狮辽,你說我怎么就攤上這事一也。” “怎么了喉脖?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵椰苟,是天一觀的道長。 經(jīng)常有香客問我树叽,道長舆蝴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任题诵,我火速辦了婚禮洁仗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘性锭。我一直安慰自己赠潦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布草冈。 她就那樣靜靜地躺著她奥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪怎棱。 梳的紋絲不亂的頭發(fā)上方淤,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機(jī)與錄音蹄殃,去河邊找鬼。 笑死你踩,一個胖子當(dāng)著我的面吹牛诅岩,可吹牛的內(nèi)容都是我干的讳苦。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼吩谦,長吁一口氣:“原來是場噩夢啊……” “哼鸳谜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起式廷,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤咐扭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后滑废,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝗肪,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年蠕趁,在試婚紗的時候發(fā)現(xiàn)自己被綠了薛闪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡俺陋,死狀恐怖豁延,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腊状,我是刑警寧澤诱咏,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站缴挖,受9級特大地震影響袋狞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜醇疼,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一硕并、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秧荆,春花似錦倔毙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至颁股,卻和暖如春么库,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甘有。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工诉儒, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亏掀。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓忱反,卻偏偏與公主長得像泛释,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子温算,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容