JavaScript基礎(chǔ)一

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

數(shù)據(jù)類型:number string null undefined boolean symbol object
原始類型:number string boolean
復(fù)雜類型:object
區(qū)別:原始數(shù)值是最基本的類型不能再細(xì)分了;復(fù)雜類型是多個(gè)原始類型的值的合成,可以看作是一個(gè)存放各種值的容器。

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

a)typeof運(yùn)算符可以返回一個(gè)值的數(shù)據(jù)類型,可能有以下結(jié)果:number string boolean undefined function object .我們可以使用typeof來獲取一個(gè)變量是否存在,如if(typeof a!="undefined"){alert("ok")},而不要去使用if(a)因?yàn)槿绻鸻不存在(未聲明)則會(huì)出錯(cuò),對(duì)于Array,Null等特 殊對(duì)象使用typeof一律返回object,這正是typeof的局限性。
b)instanceof運(yùn)算符可以用來判斷某個(gè)構(gòu)造函數(shù)的prototype屬性是否存在于另外一個(gè)要檢測(cè)對(duì)象的原型鏈上。 如var a=new Array();alert(a instanceof Array);會(huì)返回true,同時(shí)alert(a instanceof Object)也會(huì)返回true;這是因?yàn)锳rray是object的子類。

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

利用typeof就可以判斷,因?yàn)閿?shù)值、字符串、布爾值、函數(shù)分別返回number、string、boolean、function。

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

NaN是not a number,表示非數(shù)字,NaN和任何值都不相等,包括自己。

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

a)Number()將參數(shù)轉(zhuǎn)換成數(shù)字類型
b)parseInt()將參數(shù)轉(zhuǎn)化為整數(shù)
c)parseFloat()將參數(shù)轉(zhuǎn)化成浮點(diǎn)數(shù)
Number()的強(qiáng)制類型轉(zhuǎn)換與parseInt()和parseFloat()方法的處理方式相似,只是它轉(zhuǎn)換的是整個(gè)值,而不是部分值。parseInt()和parseFloat()方法只轉(zhuǎn)換第一個(gè)無效字符之前的字符串。如“3.4.5”被轉(zhuǎn)換成“3.4”,用Number()進(jìn)行強(qiáng)制類型轉(zhuǎn)換將返回NAN,如果字符串值能被完整地轉(zhuǎn)換,Number()將判斷是調(diào)用parseInt()還是parseFloat()

parseFloat("3.4.5")
//3.4
Number("3.4.5")
//NaN

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

==表示近似相等,等號(hào)兩邊的參數(shù)經(jīng)過轉(zhuǎn)換后值相等即可輸出true,否則輸出false;===表示絕對(duì)相等,參數(shù)不會(huì)轉(zhuǎn)換,相等輸出true ,否則false。

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

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

for(var i = 1; i< 10; i++){
    if(i % 4 === 0){
        break;
    }
    console.log(i);
}
// 1,2,3
for(var i = 1; i< 10; i++){
    if(i % 4 === 0){
        continue;
    }
    console.log(i);
}
//1,2,3,5,6,7,9

8、void 0 和 undefined在使用場(chǎng)景上有什么區(qū)別

void 0 運(yùn)算返回值始終都是 undefined
undefined 可以在局部作用域中被覆寫

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

console.log(1+1);               //2,數(shù)值相加
console.log("2"+"4");          //“24”,字符串拼接
console.log(2+"4");            //“24”,第一個(gè)number轉(zhuǎn)換為string后字符串拼接
console.log(+"4");              //4 ,當(dāng)只有一個(gè)字符串時(shí),類型會(huì)發(fā)生改變
console.log(+"b");              //NaN ,當(dāng)只有一個(gè)字符串時(shí),類型會(huì)發(fā)生改變
var a = 1;  
a+++a;                          //(a++)+a,++的運(yùn)算符優(yōu)先于+               
typeof a+2;                   //(typeof a) + 2,typeof優(yōu)先級(jí)高于+,"number2"
 var a = 1;
 var b = 3;
 console.log( a+++b );      //4 ,(a++)+b,++的運(yùn)算符優(yōu)先于+

10、遍歷數(shù)組以及對(duì)象

var arr = [3,4,5]
for(let i =0;i<arr.length;i++){
     console.log(arr[i]*arr[i])
}
var obj = {
 name: 'hunger', 
 sex: 'male', 
 age: 28 
}

for(let key in obj){
    console.log(obj[key])
}

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

var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0
console.log(val) 
//number2,根據(jù)優(yōu)先級(jí)先算((typeof a) + b )|| (c >0),("number" + 2) || (c >0),||前面的部分為真,則后面的不管,則console.log("number2") ,即為number2

var d = 5;
var data = d ==5 && console.log('bb')
console.log(data)
//undefined

var data2 = d = 0 || console.log('haha')
console.log(data2)
 //undefined

var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)
// 2,!為邏輯非運(yùn)算,取值的邏輯值相反,兩個(gè)!即相當(dāng)于值原本的邏輯值。逗號(hào)運(yùn)算符返回第二項(xiàng),又因?yàn)榉强兆址倪壿嬛禃r(shí)true,而布爾值做加法運(yùn)算時(shí),true轉(zhuǎn)為1,false轉(zhuǎn)為0。因此運(yùn)算如下:true + (!"world", !!"from here!!") => true + !!"from here!!" => true + true => 1 + 1 => 2
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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