JavaScript 類型

1.JavaScript 定義了幾種數(shù)據(jù)類型? 哪些是原始類型?哪些是復(fù)雜類型?原始類型和復(fù)雜類型的區(qū)別是什么?

JavaScript語(yǔ)言的每一個(gè)值,都屬于某一種數(shù)據(jù)類型。JavaScript的數(shù)據(jù)類型误墓,共有六種熊镣。

  1. 數(shù)值(number):整數(shù)和小數(shù)(比如1和3.14)
  2. 字符串(string):字符組成的文本(比如"Hello World")
  3. 布爾值(boolean):true(真)和false(假)兩個(gè)特定值
  4. undefined:表示“未定義”或不存在奔害,即此處目前沒有任何值
  5. null:表示空缺,即此處應(yīng)該有一個(gè)值凳怨,但目前為空
  6. 對(duì)象(object):各種值組成的集合
  7. symbol:一個(gè)symbol值能作為對(duì)象屬性的標(biāo)識(shí)符;這是該數(shù)據(jù)類型僅有的目的。

數(shù)值肤舞、字符串紫新、布爾值稱為原始類型(primitive type)的值,即它們是最基本的數(shù)據(jù)類型李剖,不能再細(xì)分了芒率。

將對(duì)象稱為復(fù)雜類型(complex type)的值,因?yàn)橐粋€(gè)對(duì)象往往是多個(gè)原始類型的值的合成篙顺,可以看作是一個(gè)存放各種值的容器偶芍。

2.typeof和instanceof的作用和區(qū)別?

typeof

作用: 是一個(gè)一元運(yùn)算,放在一個(gè)變量之前德玫,變量可以是任意類型匪蟀。

它返回值是一個(gè)字符串,該字符串說明變量的類型宰僧。typeof 一般只能返回如下幾個(gè)結(jié)果:number,boolean,string,function,object,undefined材彪。

我們可以使用 typeof 來獲取一個(gè)變量是否存在,如 if(typeof a!="undefined"){alert("ok")}琴儿,而不要去使用 if(a) 因?yàn)槿绻?a 不存在(未聲明)則會(huì)出錯(cuò)段化。

區(qū)別: 對(duì)于 Array,Null 等特殊對(duì)象使用 typeof 一律返回 object,這正是 typeof 的局限性造成。

instanceof
作用返回的是一個(gè)布爾值显熏,判斷該變量是否某一類型。如:
var a = {};
alert(a instanceof Object); //true
var b = [];
alert(b instanceof Array); //true
區(qū)別:需要注意的是谜疤,instanceof只能用來判斷對(duì)象和函數(shù)佃延,不能用來判斷字符串和數(shù)字等.但是,用instanceof可以判斷變量是否為數(shù)組

3.如何判斷一個(gè)變量是否是數(shù)字夷磕、字符串履肃、布爾、函數(shù)

用typeof操作符

alert(typeof(1));//number
alert(typeof("abc"));//string
alert(typeof(true));//boolean
alert(typeof function(){}); // 'function'

4.NaN是什么? 有什么特別之處?

NaN含義是Not a Number坐桩,表示非數(shù)字尺棋,NaN和任何值都不相等,包括自己

特別: 任何NaN的值進(jìn)行操作都會(huì)返回一個(gè)NaN,其次绵跷,NaN與任何值都不相等即NaN === NaN也是false.

5.如何把非數(shù)值轉(zhuǎn)化為數(shù)值?

parseInt() 函數(shù)可解析一個(gè)字符串膘螟,并返回一個(gè)整數(shù)。
parseInt("10"); //返回 10

1. Number()函數(shù)

  • 如果是 Boolean 值碾局,true 和 false 將分別被轉(zhuǎn)換為 1 和0荆残;
  • 如果是數(shù)字值,只是簡(jiǎn)單的傳入和返回净当;
  • 如來是null 值内斯,返回 0蕴潦;
  • 如果是 undefined,返回NaN 俘闯;
  • 如果是字符串潭苞,遵循下列規(guī)則:
  • 如果字符串中只包含數(shù)字,則將其轉(zhuǎn)換為十進(jìn)制數(shù)值真朗,即"1"會(huì)變成1 此疹, "123"會(huì)變成123,而"011"會(huì)變成11(注意遮婶,前導(dǎo)的0被忽略了)蝗碎;
  • 如果字符串中包含有效的浮點(diǎn)格式, 如"1.1"蹭睡,則將其轉(zhuǎn)換為對(duì)應(yīng)的浮點(diǎn)數(shù)值(同樣衍菱,也會(huì)忽略前導(dǎo)零);
  • 如果字符串中包含有效的十六進(jìn)制格式肩豁,例如"0xf"脊串,則將其轉(zhuǎn)換為相同大小的十進(jìn)制整數(shù)值;
    如果字符串是空的(不包含任何字符) 清钥,則將其轉(zhuǎn)換為0琼锋;
    如果字符串中包含除上述格式之外的字符,則將其轉(zhuǎn)換為 NaN祟昭。
  • 如果是對(duì)象缕坎,則調(diào)用對(duì)象的 valueOf() 方法,然后依照前面的規(guī)則轉(zhuǎn)換返回的值篡悟。如果轉(zhuǎn)換的結(jié)果是 NaN谜叹,則調(diào)用對(duì)象的 toString() 方法,然后再次依照前面的規(guī)則轉(zhuǎn)換返回的字符串值搬葬。

2. parseInt()

由于Number()函數(shù)在轉(zhuǎn)換字符串的時(shí)候比較復(fù)雜而且不夠合理荷腊,因此在處理整數(shù)的時(shí)候更常用的是parseInt()。

parselnt() 函數(shù)在轉(zhuǎn)換字符串時(shí)急凰,更多的是看其是否符合數(shù)值模式女仰,它會(huì)忽略字符串前面的空格,直至找到第一個(gè)非空格字符抡锈;

如果第一個(gè)字符不是數(shù)字字符或者負(fù)號(hào)疾忍,parseInt() 就會(huì)返回 NaN;也就是說床三,用parselnt() 轉(zhuǎn)換空字符時(shí)會(huì)返回 NaN(Nurnber() 對(duì)空字符返回 0)一罩;

如果第一個(gè)字符是數(shù)字字符,parselnt() 會(huì)繼續(xù)解析第二個(gè)字符撇簿,直到解析完所有后續(xù)字符或者遇到了一個(gè)非數(shù)字字符擒抛。

例如推汽,"1234blue"會(huì)被轉(zhuǎn)換為1234 ,因?yàn)?blue"會(huì)被完全忽略歧沪;類似地,"'22.5"會(huì)被轉(zhuǎn)換為22 莲组,因?yàn)樾?shù)點(diǎn)并不是有效的數(shù)字字符诊胞。

3. parseFloat()

與 parseInt () 函數(shù)類似,parseFloat () 也是從第一個(gè)字符(位置0)開始解析每個(gè)字符锹杈。而且也是一直解析到字符串末尾撵孤,或者解析到遇見一個(gè)無效的浮點(diǎn)數(shù)字字符為止。

也就是說竭望,字符串中的第一個(gè)小數(shù)點(diǎn)是有效的邪码,而第二個(gè)小數(shù)點(diǎn)就是無效的了,因此它后面的字符串將被忽略咬清。舉例來說闭专,"22.34.5"將會(huì)被轉(zhuǎn)換為22.34 。

6.==與===有什么區(qū)別

== 相等

=== 嚴(yán)格相等

詳細(xì)參考

7.break與continue有什么區(qū)別

break 用于強(qiáng)制退出循環(huán)體旧烧,執(zhí)行循環(huán)后面的語(yǔ)句
continue 用于退出本次循環(huán)影钉,執(zhí)行下次循環(huán)

8.void 0 和 undefined在使用場(chǎng)景上有什么區(qū)別

undefined在某些場(chǎng)景例如函數(shù)內(nèi)是可以被賦值,而void 0 則只會(huì)返回undefined掘剪。

9.以下代碼的輸出結(jié)果是?為什么?

console.log(1+1);    //2    (數(shù)值相加)
console.log("2"+"4");  //24    (2,4均為字符串平委,+連接字符串)
console.log(2+"4");  //24  (4為字符串,2為數(shù)值夺谁,此代碼會(huì)轉(zhuǎn)換2為字符串然后連接)
console.log(+"4");  //4     (+號(hào)強(qiáng)制轉(zhuǎn)換為數(shù)值)

10. 以下代碼的輸出結(jié)果是?

var a = 1;  
a+++a;  
typeof a+2;    //number2
/* (a++)+a=1+2;   
(typeof a)+2=number2  */

11. 以下代碼的輸出結(jié)果是? 為什么

 var a = 1;
 var b = 3;
 console.log( a+++b );    //4
/   (a++)+b=1+3=4

12. 遍歷數(shù)組廉赔,把數(shù)組里的打印數(shù)組每一項(xiàng)的平方

var arr = [3,4,5]

var arr=[3,4,5];
for(var i = 0; i<arr.length;i++){
    console.log(arr[i]*arr[i]);
}

13. 遍歷 JSON, 打印里面的值

var obj = {
 name: 'hunger', 
 sex: 'male', 
 age: 28 
}
var obj = {
            name: 'hunger', 
            sex: 'male', 
            age: 28 
        }
for(key in obj){
    console.log(key+":"+obj[key]);
}

14. 以下代碼輸出結(jié)果是? 為什么 (選做題目)

var a = 1, b = 2, c = 3;               //number2
var val = typeof a + b || c >0      
console.log(val)            
 /*  val = (typeof a) + [ b || ( c > 0 ) ]          
 typeof a ==> number;          c > 0 ==> true;      2 ||   true ==>  true
*/
var d = 5;                                             // bb
var data = d ==5 && console.log('bb')  
console.log(data)
/*   data =  ( d == 5 )  && console.log("bb")  
   d == 5  ==>  true ;       
*/
var data2 = d = 0 || console.log('haha')                   //haha
console.log(data2)
/*  data2 = [ d =(  0 || console.log('haha')   ) ]
0 ==>false   ;   d=console.log("haha")   ;data2 = d = haha
var x = !!"Hello" + (!"world", !!"from here!!");     //2
console.log(x)
/* x = (!!"Hello") + (!"world", !!"from here!!"); 
(!!"Hello")   ==>true ;      (!"world", !!"from here!!")  ==> true  ;  x=  true +true = 2

參考答案

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市匾鸥,隨后出現(xiàn)的幾起案子蜡塌,更是在濱河造成了極大的恐慌,老刑警劉巖扫腺,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岗照,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡笆环,警方通過查閱死者的電腦和手機(jī)攒至,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躁劣,“玉大人迫吐,你說我怎么就攤上這事≌送” “怎么了志膀?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵熙宇,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我溉浙,道長(zhǎng)烫止,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任戳稽,我火速辦了婚禮馆蠕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惊奇。我一直安慰自己互躬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布颂郎。 她就那樣靜靜地躺著吼渡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乓序。 梳的紋絲不亂的頭發(fā)上寺酪,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音竭缝,去河邊找鬼房维。 笑死,一個(gè)胖子當(dāng)著我的面吹牛抬纸,可吹牛的內(nèi)容都是我干的咙俩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼湿故,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼阿趁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起坛猪,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤脖阵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后墅茉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體命黔,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年就斤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悍募。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡洋机,死狀恐怖坠宴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绷旗,我是刑警寧澤喜鼓,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布副砍,位于F島的核電站,受9級(jí)特大地震影響庄岖,放射性物質(zhì)發(fā)生泄漏豁翎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一顿锰、第九天 我趴在偏房一處隱蔽的房頂上張望谨垃。 院中可真熱鬧,春花似錦硼控、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至疑苫,卻和暖如春熏版,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捍掺。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工撼短, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挺勿。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓曲横,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親不瓶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子禾嫉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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