## JavaScript 定義了幾種數據類型? 哪些是原始類型?哪些是復雜類型?原始類型和復雜類型的區別是什么?
原始類型:number類型,string類型,boolean類型
復雜類型:對象類型
區別:原始類型也叫基本類型、基礎類型,不可細分;
復雜類型也叫引用類型,是一組無序功能/數據(key/value)對組合,可由多個原始類型組合而成;可以
再細分成:狹義的對象(object);數組(array),函數(function),正則表達式(regexp)
##typeof和instanceof的作用和區別?
都是用于檢測數據類型;
typeof操作符用于直接檢測給定變量的數據類型,返回值是代表數據類型的字符串;注:(typeof (null) //"object")
instanceof 也是用于確定某個對象是不是哪種具體類型;返回值是布爾值,(value instanceof Array)
##如何判斷一個變量是否是數字、字符串、布爾、函數
用typeof 操作符
typeof (123 === "number" )
typeof ("abc"==="string" )
##NaN是什么? 有什么特別之處?
NaN是代表非數值,表示一個操作數本來要返回一個數值但并未返回任何數值的情況;
特別的地方:NaN ==NaN false;typeof (NaN) //“number”;任何和NaN的操作都會返回一個NaN;
##如何把非數值轉化為數值?
Number();可以用于任何數據類型
parseInt();parseFloat(); 把字符串轉化成數值
<高程P30~32>
##==與===有什么區別
===是嚴格意義上的相等,要求數值和類型上完全相等
##break與continue有什么區別
break立即跳出循環,強制執行循環體后面的語句;
continue是從該點立即跳出循環,跳回到循環體的頂部,繼續往下執行該循環體
##void 0 和 undefined在使用場景上有什么區別
void 0 返回一個undefined,是一種嚴格意義上的undefined,不存在;但是在某些場景下可以給undefined賦值,這時的undefined不再是代表未定義,不存在,但是控制臺并不會報錯,所以無法判斷是不是undefined。
##以下代碼的輸出結果是?為什么?
'console.log(1+1);console.log("2"+"4");console.log(2+"4");console.log(+"4");'
2 ? "24" ? ?"24" ?"4"
##10. 以下代碼的輸出結果是?
var a =1;? a+++a; typeof a+2; ? ?//"number2" ?typeofa的優先級比較高
##11. 以下代碼的輸出結果是? 為什么
var a =1;var b =3;console.log( a+++b ); ?//先執行a++,再執行+b,1+3=4
##12. 遍歷數組,把數組里的打印數組每一項的平方
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]);
}