一、JavaScript 定義了幾種數(shù)據(jù)類型? 哪些是原始類型?哪些是復(fù)雜類型?原始類型和復(fù)雜類型的區(qū)別是什么?
JavaScript語言的每一個值,都屬于某一種數(shù)據(jù)類型策治。JavaScript的數(shù)據(jù)類型,共有六種。
1.數(shù)值(number):整數(shù)和小數(shù)(比如1和3.14)
2.字符串(string):字符組成的文本(比如"Hello World")
3.布爾值(boolean):true(真)和false(假)兩個特定值
4.undefined:表示“未定義”或不存在查吊,即此處目前沒有任何值
5.null:表示空缺,即此處應(yīng)該有一個值湖蜕,但目前為空
6.對象(object):各種值組成的集合
原始類型:
1.數(shù)值
2.字符串
3.布爾值
復(fù)雜類型:對象
兩者區(qū)別:
原始類型:它們是最基本的數(shù)據(jù)類型逻卖,不能再細分了
復(fù)雜類型:因為一個對象往往是多個原始類型的值得合成,可以有多個值昭抒,可以看成一個存放各種值得容器评也。
二、typeof和instanceof的作用和區(qū)別?
typeof和可以確定一個值是什么類型灭返。
1盗迟、typeof 可以返回如下幾個結(jié)果:
number,boolean,string,function,object,undefined
2、typeof可以用來檢查一個沒有聲明的變量熙含,而不報錯
typeof v
// "undefined"
3罚缕、其他情況都返回object
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"
instanceof 用于判斷一個變量是否某個對象的實例,一般用于對象和函數(shù)中。
三婆芦、如何判斷一個變量是否是數(shù)字怕磨、字符串、布爾消约、函數(shù)
typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"
function f () {}
typeof f
// "function"
四肠鲫、NaN是什么? 有什么特別之處?
NaN == NaN; //false
parseInt('abc'); //NaN
五、如何把非數(shù)值轉(zhuǎn)化為數(shù)值?
1. Number()
2. parseInt()
3. parseFloat()
六或粮、==與===有什么區(qū)別
==:是近似相等運算符,===是嚴格相等運算符氯材,
1渣锦、如果兩個值類型相同氢哮,則執(zhí)行嚴格相等的運算
2袋毙、如果兩個值的類型不同
如果一個是null,一個是undefined冗尤,那么相等
如果一個是數(shù)字腰吟,一個是字符串,先將字符串轉(zhuǎn)為數(shù)字禾乘,然后比較
如果一個值是true/false則將其轉(zhuǎn)為1/0比較
如果一個值是對象虽缕,一個是數(shù)字或字符串始藕,則嘗試使用valueOf和toString轉(zhuǎn)換后比較
其它就不相等了
七、break與continue有什么區(qū)別
break和continue多用在循環(huán)語句中
1氮趋、break 用于強制退出循環(huán)體伍派,執(zhí)行循環(huán)后面的語句
2、continue 用于退出本次循環(huán)剩胁,執(zhí)行下次循環(huán)
八诉植、void 0 和 undefined在使用場景上有什么區(qū)別
undefined:
1,變量聲明后未賦值,則變量會被自動賦值為 undefined
2,函數(shù)中定義了一些形參昵观,如果傳入的實參少于預(yù)定義的形參晾腔,那么有一些形參就會匹配不到實參,繼而會被自動賦值為 undefined
3,沒有返回值的函數(shù)啊犬,默認返回 undefined
void運算符的作用是執(zhí)行一個表達式灼擂,然后返回undefined
1,生成 undefined
2,讓函數(shù)立即執(zhí)行
3,充當(dāng) javascript: 協(xié)議的 URI生成 undefined
使用 void 0 生成 undefined 的做法由來已久,既減少了在原形鏈上查找 window.undefined 的時間觉至,也避免了誤用被修改過的 undefined剔应。
九、以下代碼的輸出結(jié)果是?為什么?
console.log(1+1); //2 兩個數(shù)字相加语御,做加法運算
console.log("2"+"4"); //24 兩個字符串相加峻贮,做字符串拼接
console.log(2+"4"); //24 一個數(shù)字和一個字符串相加,也做字符串拼接
console.log(+"4");//4 一個字符串应闯,直接輸出里面的東西
十纤控、以下代碼的輸出結(jié)果是?
var a = 1; //undefined
a+++a; //(a++)+a->3
typeof a+2;//"number2"
十一、. 以下代碼的輸出結(jié)果是? 為什么
var a = 1;
var b = 3;
console.log( a+++b );//4 (a++)+b->4
十二碉纺、遍歷數(shù)組船万,把數(shù)組里的打印數(shù)組每一項的平方
var arr = [3,4,5]//var arr=[3,4,5]
for(var i =0; i<arr.length; i++){
console.log(arr[i]*arr[i])
}//9 16 25 undefined
十三细层、 遍歷 JSON, 打印里面的值
var obj = {
name: 'hunger',
sex: 'male',
age: 28
}//for(var key in obj){
console.log(obj[key])
}
hunger
male
28
十四、 以下代碼輸出結(jié)果是? 為什么 (選做題目)
var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0
console.log(val) //number2->||的左邊是(typeof a)+b得number2,右邊為true
var d = 5;
var data = d ==5 && console.log('bb')
console.log(data)// bb ->data= [(d ==5) && 'bb' ]-> 'bb'
var data2 = d = 0 || console.log('haha')
console.log(data2)//haha
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)//2