JavaScript 類型

1.JavaScript 定義了幾種數據類型? 哪些是原始類型?哪些是復雜類型?原始類型和復雜類型的區別是什么?

JavaScript語言的每一個值,都屬于某一種數據類型。JavaScript的數據類型,共有六種。

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

數值、字符串、布爾值稱為原始類型(primitive type)的值,即它們是最基本的數據類型,不能再細分了。

將對象稱為復雜類型(complex type)的值,因為一個對象往往是多個原始類型的值的合成,可以看作是一個存放各種值的容器。

2.typeof和instanceof的作用和區別?

typeof

作用: 是一個一元運算,放在一個變量之前,變量可以是任意類型。

它返回值是一個字符串,該字符串說明變量的類型。typeof 一般只能返回如下幾個結果:number,boolean,string,function,object,undefined。

我們可以使用 typeof 來獲取一個變量是否存在,如 if(typeof a!="undefined"){alert("ok")},而不要去使用 if(a) 因為如果 a 不存在(未聲明)則會出錯。

區別: 對于 Array,Null 等特殊對象使用 typeof 一律返回 object,這正是 typeof 的局限性。

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

3.如何判斷一個變量是否是數字、字符串、布爾、函數

用typeof操作符

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

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

NaN含義是Not a Number,表示非數字,NaN和任何值都不相等,包括自己

特別: 任何NaN的值進行操作都會返回一個NaN,其次,NaN與任何值都不相等即NaN === NaN也是false.

5.如何把非數值轉化為數值?

parseInt() 函數可解析一個字符串,并返回一個整數。
parseInt("10"); //返回 10

1. Number()函數

  • 如果是 Boolean 值,true 和 false 將分別被轉換為 1 和0;
  • 如果是數字值,只是簡單的傳入和返回;
  • 如來是null 值,返回 0;
  • 如果是 undefined,返回NaN ;
  • 如果是字符串,遵循下列規則:
  • 如果字符串中只包含數字,則將其轉換為十進制數值,即"1"會變成1 , "123"會變成123,而"011"會變成11(注意,前導的0被忽略了);
  • 如果字符串中包含有效的浮點格式, 如"1.1",則將其轉換為對應的浮點數值(同樣,也會忽略前導零);
  • 如果字符串中包含有效的十六進制格式,例如"0xf",則將其轉換為相同大小的十進制整數值;
    如果字符串是空的(不包含任何字符) ,則將其轉換為0;
    如果字符串中包含除上述格式之外的字符,則將其轉換為 NaN。
  • 如果是對象,則調用對象的 valueOf() 方法,然后依照前面的規則轉換返回的值。如果轉換的結果是 NaN,則調用對象的 toString() 方法,然后再次依照前面的規則轉換返回的字符串值。

2. parseInt()

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

parselnt() 函數在轉換字符串時,更多的是看其是否符合數值模式,它會忽略字符串前面的空格,直至找到第一個非空格字符;

如果第一個字符不是數字字符或者負號,parseInt() 就會返回 NaN;也就是說,用parselnt() 轉換空字符時會返回 NaN(Nurnber() 對空字符返回 0);

如果第一個字符是數字字符,parselnt() 會繼續解析第二個字符,直到解析完所有后續字符或者遇到了一個非數字字符。

例如,"1234blue"會被轉換為1234 ,因為"blue"會被完全忽略;類似地,"'22.5"會被轉換為22 ,因為小數點并不是有效的數字字符。

3. parseFloat()

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

也就是說,字符串中的第一個小數點是有效的,而第二個小數點就是無效的了,因此它后面的字符串將被忽略。舉例來說,"22.34.5"將會被轉換為22.34 。

6.==與===有什么區別

== 相等

=== 嚴格相等

詳細參考

7.break與continue有什么區別

break 用于強制退出循環體,執行循環后面的語句
continue 用于退出本次循環,執行下次循環

8.void 0 和 undefined在使用場景上有什么區別

undefined在某些場景例如函數內是可以被賦值,而void 0 則只會返回undefined。

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

console.log(1+1);    //2    (數值相加)
console.log("2"+"4");  //24    (2,4均為字符串,+連接字符串)
console.log(2+"4");  //24  (4為字符串,2為數值,此代碼會轉換2為字符串然后連接)
console.log(+"4");  //4     (+號強制轉換為數值)

10. 以下代碼的輸出結果是?

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

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

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

12. 遍歷數組,把數組里的打印數組每一項的平方

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. 以下代碼輸出結果是? 為什么 (選做題目)

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

參考答案

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,202評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,742評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,580評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,297評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,688評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,875評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,438評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,183評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,384評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,612評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,022評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,297評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,093評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,330評論 2 377

推薦閱讀更多精彩內容

  • 1.JavaScript 定義了幾種數據類型? 哪些是原始類型?哪些是復雜類型?原始類型和復雜類型的區別是什么? ...
    upup_dayday閱讀 291評論 0 1
  • 1. JavaScript 定義了幾種數據類型? 哪些是原始類型?哪些是復雜類型?原始類型和復雜類型的區別是什么?...
    曉風殘月1994閱讀 257評論 0 0
  • 1.JavaScript 定義了幾種數據類型? 哪些是原始類型?哪些是復雜類型?原始類型和復雜類型的區別是什么? ...
    FLYSASA閱讀 207評論 0 0
  • 1.JavaScript 定義了幾種數據類型? 哪些是原始類型?哪些是復雜類型?原始類型和復雜類型的區別是什么? ...
    取個名字都不行閱讀 316評論 0 1
  • 北方某市的初春,市政府宣傳部的公務員李大壯的父母打來電話,說家里的房子要拆遷,要來市里住兩年,等新房子蓋好...
    我的名字也叫紅閱讀 1,066評論 0 0