數(shù)據(jù)類型運(yùn)算符流程控制語(yǔ)句

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

javascript定義了6種數(shù)據(jù)類型,分別是number(數(shù)值)、string(字符串)、boolean(布爾值)、underfind(未定義或不存在,沒(méi)有值)、null(應(yīng)該有值目前沒(méi)有)、object(對(duì)象)
原始類型(基本類型):string、number、Boolean
復(fù)雜類型:object
underfind和null是兩個(gè)特殊類型
原始類型和復(fù)雜類型的區(qū)別:原始類型是基本的數(shù)據(jù)類型,不能再細(xì)分了;復(fù)雜類型是多個(gè)原始類型的合成,可以看成是一個(gè)存放各種值的容器。

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

typeof用于判斷一個(gè)變量的類型;
instanceof判斷一個(gè)變量是否是某個(gè)對(duì)象的實(shí)例
區(qū)別:typeof一般檢測(cè)基本類型,instanceof一般檢測(cè)復(fù)雜類型

/regularexpression/ instanceof RegExp;   // true
typeof /regularexpression/; //object

[] instanceof Array;   // true
typeof []; //object

{} instanceof Object;   // true
typeof {}; //object

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

用typeof操作符可以判斷:

typeof a;       //"number"   變量a為數(shù)字
typeof a;      //"string"        變量a為字符串
typeof a;      //"boolean"     變量a為布爾值
typeof a;     //"function"       變量a為函數(shù)
/*其他類型*/
typeof underfind      //"underfind"
typeof null              //"object"
typeof []                //"object"
typeof {}               //"object"

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

NaN表示非數(shù)字(Not a Number),NaN是一個(gè)特殊的數(shù)值,與任何值都不相等,包括自己。

NaN==NaN;   //flase

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

有三個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:
1.number()

  • 如果是Boolean值,true和false將分別轉(zhuǎn)化為1和0;
  • 如果是數(shù)字,直接傳入數(shù)字;
  • 如果是null,返回0;
  • 如果是underfind,返回NaN;
  • 如果是對(duì)象,則調(diào)用對(duì)象的valueOf()方法,然后按照前面的規(guī)則轉(zhuǎn)換返回的值,如果轉(zhuǎn)換的結(jié)果是NaN,則調(diào)用toString()方法,然后再次依照前面的規(guī)則轉(zhuǎn)換。

number()函數(shù)轉(zhuǎn)換字符串時(shí)比較麻煩而且不合理,因此常用parseInt()和parseFloat()函數(shù)

2.parseInt()
在轉(zhuǎn)換字符串時(shí),會(huì)忽略字符串前面的空格,找到第一個(gè)非空格字符,如果第一個(gè)字符不是數(shù)字或者負(fù)號(hào),parseInt()會(huì)返回NaN,如果是繼續(xù)解析,知道解析完或者碰到第一個(gè)非數(shù)字字符;可以傳遞參數(shù)指定幾進(jìn)制解析。

parseInt("123abc");   //123
parseInt("");     //NaN
parseInt("0xA");   //10
parseInt("123abc");   //123
parseInt("22.2");   //22
parseInt("070");   //56(八進(jìn)制)
parseInt("true");   //NaN

3.parseFloat()
與parseInt()類似,轉(zhuǎn)換浮點(diǎn)數(shù)時(shí),遇到的第一個(gè)小數(shù)點(diǎn)有效,第二個(gè)之后的就無(wú)效,只解析十進(jìn)制,解析十六進(jìn)制字符串時(shí)會(huì)轉(zhuǎn)換成0;

parseFloat("22.5");    //22.5
parseFloat("22.5.4");    //22.5
parseFloat("3.125e7");    //31250000
parseFloat("0xA");    //0

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

==(相等)操作符會(huì)先轉(zhuǎn)換在比較,null和underfind不能轉(zhuǎn)換;===(全等)操作符是僅比較不轉(zhuǎn)換;

null==underfind;  //true
null===underfind;  //false
"23"==23;   //true
"23"===23;   //false
true==1;      //true
true===1;   //false
null==0;   //false
"NaN"==Nan;   //false

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

break和continue都可以用來(lái)結(jié)束循環(huán)

  • break是強(qiáng)制跳出循環(huán)體執(zhí)行循環(huán)體外面的語(yǔ)句,
  • continue跳出當(dāng)前循環(huán),繼續(xù)執(zhí)行下次循環(huán)。

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

underfind可以作為一個(gè)變量給它賦值,在需要判斷一個(gè)變量是否等于underfind時(shí),不確定underfind值時(shí)可以用void 0。

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

console.log(1+1);     //2, 
console.log("2"+"4");  //"24",兩個(gè)字符串相加把兩個(gè)字符串拼接
console.log(2+"4");   //"24",有一個(gè)是字符串,把另一個(gè)轉(zhuǎn)換成字符串再拼接
console.log(+"4");  //4,字符串轉(zhuǎn)換成數(shù)值

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

var a = 1;  
a+++a;       //輸出3,(a++)+a,a++優(yōu)先級(jí)高,a已經(jīng)變?yōu)?
typeof a+2;    //"number2",typeof a 先執(zhí)行返回"number"

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

 var a = 1;
 var b = 3;
 console.log( a+++b );  //4,后置遞增是在包含他的運(yùn)算求值之后執(zhí)行

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

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 
}
for(var key in obj){
  console.log(key+":"+obj[key])
}

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

var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0;
console.log(val);  //number2,typeof a+b返回"number2"為true,不對(duì)第二個(gè)求值

var d = 5;
var data = d ==5 && console.log('bb');
console.log(data);  //underfind,邏輯與運(yùn)算符,d==5為真,返回第二個(gè)值,console.log()返回值是underfind

var data2 = d = 0 || console.log('haha');
console.log(data2);    //underfind,邏輯或運(yùn)算符,第一個(gè)d=0為false返回第二個(gè)操作數(shù)onsole.log()返回值是underfind

var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x);  //2,!!相當(dāng)于取變量對(duì)應(yīng)的布爾值,括號(hào)里逗號(hào)操作符取最后一個(gè)值
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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