## JavaScript 定義了幾種數(shù)據(jù)類型? 哪些是原始類型?哪些是復(fù)雜類型?原始類型和復(fù)雜類型的區(qū)別是什么?
原始類型:number類型吧慢,string類型表鳍,boolean類型
復(fù)雜類型:對象類型
區(qū)別:原始類型也叫基本類型、基礎(chǔ)類型,不可細分;
復(fù)雜類型也叫引用類型,是一組無序功能/數(shù)據(jù)(key/value)對組合块茁,可由多個原始類型組合而成;可以
再細分成:狹義的對象(object);數(shù)組(array)数焊,函數(shù)(function)永淌,正則表達式(regexp)
##typeof和instanceof的作用和區(qū)別?
都是用于檢測數(shù)據(jù)類型;
typeof操作符用于直接檢測給定變量的數(shù)據(jù)類型佩耳,返回值是代表數(shù)據(jù)類型的字符串遂蛀;注:(typeof (null) //"object")
instanceof 也是用于確定某個對象是不是哪種具體類型;返回值是布爾值干厚,(value instanceof Array)
##如何判斷一個變量是否是數(shù)字李滴、字符串、布爾蛮瞄、函數(shù)
用typeof 操作符
typeof (123 === "number" )
typeof ("abc"==="string" )
##NaN是什么? 有什么特別之處?
NaN是代表非數(shù)值所坯,表示一個操作數(shù)本來要返回一個數(shù)值但并未返回任何數(shù)值的情況;
特別的地方:NaN ==NaN false挂捅;typeof (NaN) //“number”;任何和NaN的操作都會返回一個NaN;
##如何把非數(shù)值轉(zhuǎn)化為數(shù)值?
Number();可以用于任何數(shù)據(jù)類型
parseInt();parseFloat(); 把字符串轉(zhuǎn)化成數(shù)值
<高程P30~32>
##==與===有什么區(qū)別
===是嚴格意義上的相等包竹,要求數(shù)值和類型上完全相等
##break與continue有什么區(qū)別
break立即跳出循環(huán),強制執(zhí)行循環(huán)體后面的語句籍凝;
continue是從該點立即跳出循環(huán),跳回到循環(huán)體的頂部苗缩,繼續(xù)往下執(zhí)行該循環(huán)體
##void 0 和 undefined在使用場景上有什么區(qū)別
void 0 返回一個undefined饵蒂,是一種嚴格意義上的undefined,不存在酱讶;但是在某些場景下可以給undefined賦值退盯,這時的undefined不再是代表未定義,不存在泻肯,但是控制臺并不會報錯渊迁,所以無法判斷是不是undefined。
##以下代碼的輸出結(jié)果是?為什么?
'console.log(1+1);console.log("2"+"4");console.log(2+"4");console.log(+"4");'
2 ? "24" ? ?"24" ?"4"
##10. 以下代碼的輸出結(jié)果是?
var a =1;? a+++a; typeof a+2; ? ?//"number2" ?typeofa的優(yōu)先級比較高
##11. 以下代碼的輸出結(jié)果是? 為什么
var a =1;var b =3;console.log( a+++b ); ?//先執(zhí)行a++,再執(zhí)行+b,1+3=4
##12. 遍歷數(shù)組灶挟,把數(shù)組里的打印數(shù)組每一項的平方
var arr = [3,4,5]
for (var i =0 ;i<arr.length;i++) {
var newArr = arr[i]*arr[i];
return newArr;
}
##13. 遍歷 JSON, 打印里面的值
varobj = { name:'hunger',? sex:'male',? age:28}
for (var key in obj) {
console.log(obj[key]);
}