進(jìn)階任務(wù)-2

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

共有6種數(shù)據(jù)類型
原始數(shù)據(jù)類型:有number,string,null,undefined,boolean。
復(fù)雜類型:有object,array,function
區(qū)別:原始數(shù)據(jù)類型保存在棧內(nèi)存中,保存的是原始數(shù)據(jù)的數(shù)據(jù)段,復(fù)雜數(shù)據(jù)類型保存在堆內(nèi)存中,保存在堆內(nèi)存中,存的是“地址坐標(biāo)”,因?yàn)閮烧卟煌谋4娣绞?,在?shù)據(jù)復(fù)制上有所差異。

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

基礎(chǔ)類型用typeof來檢測數(shù)據(jù)類型,返回具體是那個(gè)原始數(shù)據(jù)類型
復(fù)雜類型的用instanceof來檢測,返回一個(gè)布爾值,判斷是否是某個(gè)類的實(shí)例。

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

function testData(data){
    if(typeof data === "number" || 
           typeof data === "string" || 
           typeof data === "boolean" ||
           typeof data === "function") {
        return typeof data
}
}

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

NaN:not a number,表明數(shù)據(jù)類型不是數(shù)字,常見于要把字符串轉(zhuǎn)換為數(shù)字時(shí),比如parseInt('a')得到的結(jié)果是NaN
特別之處在于NaN != NaN,自己和自己不相等

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

Number()
parseInt()
parseFloat()

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

===嚴(yán)格意義上的相等,不光值要相等,數(shù)據(jù)類型也要一樣。
==普通相等,確保值相等。
比較的簡單規(guī)則:
如果兩個(gè)值類型相同,則執(zhí)行嚴(yán)格相等的運(yùn)算
如果兩個(gè)值的類型不同
如果一個(gè)是null,一個(gè)是undefined,那么相等
如果一個(gè)是數(shù)字,一個(gè)是字符串,先將字符串轉(zhuǎn)為數(shù)字,然后比較
如果一個(gè)值是true/false則將其轉(zhuǎn)為1/0比較
如果一個(gè)值是對象,一個(gè)是數(shù)字或字符串,則嘗試使用valueOf和toString轉(zhuǎn)換后比較

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

break 用于強(qiáng)制退出循環(huán)體,執(zhí)行循環(huán)體后面的語句
continue 用于退出本次循環(huán),執(zhí)行下次循環(huán)

void 0 和 undefined在使用場景上有什么區(qū)別

void 0 的值永遠(yuǎn)都是undefined,而undefined在某些時(shí)候可以被賦值,如果需要判斷一個(gè)變量的值是否為undefined,用void 0 比較有保證

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

console.log(1+1);    // 2 普通數(shù)字相加
console.log("2"+"4");  //24 字符串拼接
console.log(2+"4"); // 24  會(huì)把數(shù)字轉(zhuǎn)化成字符串
console.log(+"4");// 4 只有一個(gè)值 把字符串轉(zhuǎn)化成了數(shù)字

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

//運(yùn)算符優(yōu)先級(jí)的問題
var a = 1;  
a+++a;   //瀏覽器是這樣讀碼的 (a++)+a 相當(dāng)于(1++)+1  最后就是2了
typeof a+2;  最后是number2   瀏覽器 是這樣讀碼的( typeof a)+2 = “number”+2 =  “number2” 
備忘“a++的時(shí)候,a值暫時(shí)不變。++a的時(shí)候a的值馬上就會(huì)變化”


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

 var a = 1;
 var b = 3;
 console.log( a+++b );//4  原因 瀏覽器讀碼 (a++)+b  (1++)+3=4

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

var arr = [3,4,5]
function square(arr){
    for(var i = 0;i<arr.length;i++){ 
     var result = arr[i]*arr[i]
     console.log(result)
  }
}
square(arr)

遍歷 JSON, 打印里面的值

var obj = {
 name: 'hunger', 
 sex: 'male', 
 age: 28 
}

//淺拷貝方法解決
var obj = {
 name: 'hunger', 
 sex: 'male', 
 age: 28 
}
function shallowCopy(sourceObj){
    var targetObj = []
    for(var key in sourceObj){
        targetObj[key] = sourceObj[key]
    }
  return targetObj
}
shallowCopy(obj)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容