1.JavaScript 定義了幾種數(shù)據(jù)類型? 哪些是原始類型?哪些是復(fù)雜類型?原始類型和復(fù)雜類型的區(qū)別是什么?
js定義了6種數(shù)據(jù)類型分別是 Number,String,undefined,null,boolean,object
null和undefined的區(qū)別是 null一般表示空值,而undefined表示沒有值
原始類型是 數(shù)值,字符串,布爾類型
復(fù)雜類型是:object 對(duì)象:數(shù)組,函數(shù),正則表達(dá)式。
至于undefined和null,一般則是將它們看作兩個(gè)特殊的值。
原始類型與復(fù)雜類型的區(qū)別是:
原始類型是不能再細(xì)分的了,而復(fù)雜類型則是多個(gè)原始類型的值的合成,可以看作是一個(gè)存放各種值的容器。
2.typeof和instanceof的作用和區(qū)別?
typeof測試原始數(shù)據(jù)類型,instanceof測試實(shí)例類型
而instanceof可以區(qū)分?jǐn)?shù)組和對(duì)象
3.如何判斷一個(gè)變量是否是數(shù)字、字符串、布爾、函數(shù)
4.NaN是什么? 有什么特別之處?
NaN表示 非數(shù)字 Not a number,NaN和任何值都不相等。
特別之處是:NaN==NaN結(jié)果是false
5.如何把非數(shù)值轉(zhuǎn)化為數(shù)值?
5.1 Number()
5.2 parseInt( )
3 parseFloat ( )?
6.==與===有什么區(qū)別
==普通相等,表明是值的相等
而===則是嚴(yán)格相等,比較的是類型和值
7.break與continue有什么區(qū)別
break是跳出循環(huán)體,continue跳出單次循環(huán)
8.void 0 和 undefined在使用場景上有什么區(qū)別
undefined在JavaScript中并不屬于保留字/關(guān)鍵字,因此在IE5.5~8中我們可以將其當(dāng)作變量那樣對(duì)其賦值(IE9+及其他現(xiàn)代瀏覽器中賦值給undefined將無效)于是采用void方式獲取純正的未經(jīng)賦值的undefined則成了通用準(zhǔn)則。void 變量 無論怎樣結(jié)果都為undefined
9.以下代碼的輸出結(jié)果是?為什么?
9.1 ?console.log(1+1) 結(jié)果為2 , 因?yàn)?b>兩個(gè)操作數(shù)都是數(shù)字,會(huì)加做加法運(yùn)算
9.2 console.log("2"+"4")結(jié)果為”24“ ,因?yàn)?b>兩個(gè)操作數(shù)是字符串,會(huì)做字符串拼接
9.3 console.log(2+"4")結(jié)果是”24“,因?yàn)?b>當(dāng)操作數(shù)中一個(gè)是字符串的時(shí)候,如果另一個(gè)不是字符串,則會(huì)將該操作數(shù)轉(zhuǎn)為字符串,所以將2轉(zhuǎn)為”2“,然后再做字符串的拼接。
9.4 console.log(+"4") 結(jié)果是4,當(dāng)只有一個(gè)字符串參數(shù)的時(shí)候會(huì)將其轉(zhuǎn)換為數(shù)字。
10. 以下代碼的輸出結(jié)果是?
結(jié)果是"number2"
優(yōu)先級(jí)為 ++,+
分析:a+++a=(a++)+a
先執(zhí)行a++結(jié)果為1,a=1+1=2,
1+a則結(jié)果為1+2=3.而 typeof a+2中typeof的優(yōu)先級(jí)比+高 ,先執(zhí)行 typeof a,結(jié)果為”number“,”number“+2,則是2轉(zhuǎn)為”2“,然后做字符串的拼接,結(jié)果為”nuber2“
11. 以下代碼的輸出結(jié)果是? 為什么
結(jié)果為 4
分析:a+++b=(a++)+b,因?yàn)椤?+”的優(yōu)先級(jí)高于“+”,所以先執(zhí)行(a++),而(a++)是先執(zhí)行后+,則結(jié)果為1,a=2,(a++)+b則是1+b=1+3=4.
12. 遍歷數(shù)組,把數(shù)組里的打印數(shù)組每一項(xiàng)的平方
13. 遍歷 JSON, 打印里面的值
14. 以下代碼輸出結(jié)果是? 為什么
14.1
? ? ?結(jié)果為"number2"
分析:"||"或運(yùn)算是前面的值為true,則不管后面的值如何,則結(jié)果為前面的值
優(yōu)先級(jí)為: typeof ?+ ?> || =
var? vall=(typeof a)+b || (c>0)
typeof a結(jié)果為“number”,"number"+b結(jié)果為"number2", 或運(yùn)算是“number2”為結(jié)果,因此 val為“number2”
14.2
結(jié)果為 undefined
只要“&&”前面是true,無論“&&”后面是true還是false,結(jié)果都將返“&&”后面的值;
優(yōu)先級(jí)是: == ?&& ? =
var ?data=(data==5)&&(console.log("bb") )
(data==5)結(jié)果為 true,&&運(yùn)算以(console.log("bb") )的值為結(jié)果 undefined。因?yàn)楹瘮?shù)表達(dá)式?jīng)]有return 語句就會(huì)返回undefined
14.3
結(jié)果:undefined
只要“||”前面為false,無論“||”后面是true還是false,結(jié)果都返回“||”后面的值。
優(yōu)先級(jí):|| =
等式為 var data2=d=(0||console.log("haha"))
(0 || console.log("haha")) 0是false,結(jié)果undefined,因?yàn)楹瘮?shù)表達(dá)式?jīng)]有return 語句就會(huì)返回undefined
data2=undefined
14.4
結(jié)果: 2
當(dāng)有逗號(hào)運(yùn)算的時(shí)候取后面的值。
等式為:var x=true+(!!"form here!!")
? ? ? ? ? ? ? ? ? ? ? =true+true
? ? ? ? ? ? ? ? ? ? ?=2
關(guān)乎邏輯運(yùn)算符的”短路”功能的總結(jié)如下
1、只要“||”前面為false,無論“||”后面是true還是false,結(jié)果都返回“||”后面的值。
2、只要“||”前面為true,無論“||”后面是true還是false,結(jié)果都返回“||”前面的值。
3、只要“&&”前面是false,無論“&&”后面是true還是false,結(jié)果都將返“&&”前面的值;
4、只要“&&”前面是true,無論“&&”后面是true還是false,結(jié)果都將返“&&”后面的值;
參考鏈接:https://www.cnblogs.com/pigtail/archive/2012/03/09/2387486.html