1. JavaScript 定義了幾種數(shù)據(jù)類型? 哪些是原始類型?哪些是復(fù)雜類型?原始類型和復(fù)雜類型的區(qū)別是什么?
字符串,布爾值,數(shù)字,對(duì)象(object)
原始類型:字符串,布爾值,數(shù)字
復(fù)雜類型:對(duì)象(其中對(duì)象里還能分為狹義的對(duì)象object,數(shù)組arry,函數(shù)function,正則表達(dá)式regexp,null和undefined是兩個(gè)特殊值)
區(qū)別:原始類型一般由字符串过蹂,數(shù)字鹿响,布爾值組成仗岖,而復(fù)雜類型一般會(huì)是多個(gè)原始類型的封裝
2. typeof和instanceof的作用和區(qū)別?
- typeof:可以返回?cái)?shù)據(jù)的數(shù)據(jù)類型逗鸣。比如:數(shù)字number,字符串string桐智,對(duì)象object稿壁,布爾值boolean卵惦,函數(shù)function,undefined會(huì)返回undefined,其他的會(huì)返回object
- instanceof:可以用于判斷數(shù)組和對(duì)象团驱,因?yàn)閠ypeof對(duì)數(shù)組和對(duì)象都會(huì)返回object因此用instanceof可以判斷數(shù)組和對(duì)象摸吠,會(huì)返回true或者false
3. 如何把非數(shù)字轉(zhuǎn)換為數(shù)值?
- parseInt()
- number()
- parseFloat()
4. == 和 === 有什么區(qū)別嚎花?
- 在使用 === 時(shí)兩邊值相等并且數(shù)據(jù)類型相等時(shí)寸痢,即完全相等時(shí)才會(huì)返回true
- 在使用 == 時(shí)兩邊比較的要求會(huì)有所降低,具體如下:
如果類型不同時(shí) null 和 undefined 相等
在數(shù)字和字符串比較時(shí)紊选,會(huì)把字符串轉(zhuǎn)換成數(shù)字進(jìn)行比較
如果是true和false 會(huì)轉(zhuǎn)換成1和0 進(jìn)行比較
如果一個(gè)是對(duì)象 一個(gè)是數(shù)字或者字符串 則使用valueof和tostring進(jìn)行比較
除了以上的情況轿腺,只要數(shù)據(jù)類型不一樣就不會(huì)相等了
5. break與continue有什么區(qū)別?
在使用break時(shí)丛楚,遇到break后會(huì)跳出循環(huán)體不再進(jìn)行函數(shù)循環(huán)
`for(var i = 1; i< 10; i++){
if(i % 4 === 0){
break;
}
console.log(i);
}`
在使用continue時(shí)族壳,遇到continue后會(huì)跳過(guò)當(dāng)前循環(huán)階段進(jìn)入下一個(gè)循環(huán)階段
for(var i = 1; i< 10; i++){
`if(i % 4 === 0){
continue;
}
console.log(i);
}
顯示1235679 到4和8時(shí)跳過(guò)繼續(xù)循環(huán)`
6. void 0 和 undefined在使用場(chǎng)景上有什么區(qū)別?
void 0 會(huì)返回undefined
另外有時(shí)候undefined可以賦值