JavaScript 定義了幾種數據類型? 哪些是原始類型?哪些是復雜類型?原始類型和復雜類型的區別是什么?
- 數據類型
number, string, boolean, object,undefined, null - 原始數據類型
number, string, boolean, - 復雜類型
object - 原始類型和復雜類型的區別
原始類型是最基本的數據類型,不能再細分了。
復雜類型往往是多個原始類型的值的合成,可以看作是一個存放各種值的容器。
typeof和instanceof的作用和區別?
- typeof運算符可以返回一個值的數據類型:
數值、字符串、布爾值分別返回number、string、boolean;
函數返回function;
undefined返回undefined;
除此以外,其他情況都返回object; - instanceof可以判斷是不是某個構造函數的實例
var o = {};
var a = [];
o instanceof Array // false
a instanceof Array // true
因此instanceof可以用來區分數組和對象
如何判斷一個變量是否是數字、字符串、布爾、函數
function isNumber(a) {
return typeof a == 'number';
}
function isString(a) {
return typeof a == 'string';
}
function isBoolean(a) {
return typeof a == 'boolean';
}
function isFunction(a) {
return typeof a == 'function';
}
NaN是什么? 有什么特別之處?
- NaN非數值
- NaN和任何值都不相等,包括自己
NaN == NaN // false
如何把非數值轉化為數值?
Number()
parseInt()
parseFloat()
==與===有什么區別
1.==
- 相等運算符比較相同類型的數據時,與嚴格相等運算符完全一樣。
- 比較不同類型的數據時,相等運算符會先將數據進行類型轉換,然后再用嚴格相等運算符比較:
原始類型的數據會轉換成數值類型再進行比較;
對象(這里指廣義的對象,包括數組和函數)與原始類型的值比較時,對象轉化成原始類型的值,再進行比較;
undefined和null與其他類型的值比較時,結果都為false,它們互相比較時結果為true;
2.===
- 如果兩個值的類型不同,直接返回false;
- 同一類型的原始類型的值(數值、字符串、布爾值)比較時,值相同就返回true,值不同就返回false;
- 兩個復合類型(對象、數組、函數)的數據比較時,不是比較它們的值是否相等,而是比較它們是否指向同一個對象;
- 注意,對于兩個對象的比較,嚴格相等運算符比較的是地址,而大于或小于運算符比較的是值。
break與continue有什么區別
- break是跳出循環體,執行下一條語句
- continue是跳出本次循環,執行下一次循環
void 0 和 undefined在使用場景上有什么區別
- undefined可能會被賦值
- 而void 0永遠返回真是的undefined,void 0用來在if判斷時代替真實的undefined
以下代碼的輸出結果是?為什么?
console.log(1+1); // 2
console.log("2"+"4"); // "24"
console.log(2+"4"); // "24"
console.log(+"4"); // 4
- 如果運算子是對象,先自動轉成原始類型的值;
- 兩個運算子都是原始類型的值以后,只要有一個運算子是字符串,則兩個運算子都轉為字符串,執行字符串連接運算。
- 否則,兩個運算子都轉為數值,執行加法運算。
- 加法運算符一定有左右兩個運算子,如果只有右邊一個運算子,就是另一個運算符,叫做“數值運算符”,值運算符用于返回右邊運算子的數值形式。
以下代碼的輸出結果是?
var a = 1;
a+++a;
typeof a+2; //'number2'
以下代碼的輸出結果是? 為什么
var a = 1;
var b = 3;
console.log( a+++b ); //4
相當于(a++)+b,即1+3=4
遍歷數組,把數組里的打印數組每一項的平方 var arr = [3,4,5]
for (var i=0; i<arr.length; i++) {
console.log(arr[i]*arr[i]);
}
遍歷 JSON, 打印里面的值
var obj = {
name: 'hunger',
sex: 'male',
age: 28
}
for (var key in obj) {
console.log(obj[key]);
}
以下代碼輸出結果是? 為什么 (選做題目)
var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0
console.log(val) // "number2"
var d = 5;
var data = d ==5 && console.log('bb')
console.log(data) // 'bb'
var data2 = d = 0 || console.log('haha')
console.log(data2) //'haha'
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x) // 2