1、JavaScript 定義了幾種數據類型? 哪些是原始類型?哪些是復雜類型?原始類型和復雜類型的區別是什么?
2、typeof和instanceof的作用和區別?
3、如何判斷一個變量是否是數字、字符串、布爾、函數
4、NaN是什么? 有什么特別之處?
5、如何把非數值轉化為數值?
6、==與===有什么區別
7、break與continue有什么區別
8、void 0 和 undefined在使用場景上有什么區別
9、以下代碼的輸出結果是?為什么?
1、
數據類型分類
JavaScript的數據類型,共有六種。
數值(number):整數和小數(比如1和3.14)
字符串(string):字符組成的文本(比如"Hello World")
布爾值(boolean):true(真)和false(假)兩個特定值
undefined:表示“未定義”或不存在,即此處目前沒有任何值
null:表示空缺,即此處應該有一個值,但目前為空
對象(object):各種值組成的集合
數值、字符串、布爾值稱為原始類型(primitive type)的值,即它們是最基本的數據類型,不能再細分了。
將對象稱為復雜類型(complex type)的值,因為一個對象往往是多個原始類型的值的合成,可以看作是一個存放各種值的容器。
至于undefined和null,一般將它們看成兩個特殊值。
對象的細分
狹義的對象(object)
數組(array)
函數(function)
正則表達式 (regexp)
2、
typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"
function f() {} typeof f // "function"
typeof undefined // "undefined"
除此以外,其他情況都返回object。
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"
區分數組和對象
var b = {};
var a = [];
b instanceof Array // false
a instanceof Array // true
3、
答:
var a = xxx;
if(typeof a === "number" || typeof a === "string" || typeof a === "boolean" || typeof a === "function")
{console.log(typeof a);}
就可以知道了.
4、
答:NaN stand for terms of "Not a Number" 即表示這個變量聲明的數據類型不是一個number類型的數據,比如你可以用isNaN("blue");就可以發現返回的事一個true,當然對于其他的數據類型其解析規則和Number()差不多.
特別之處,首先,任何NaN的值進行操作都會返回一個NaN,其次,NaN與任何值都不相等即NaN === NaN也是false.
5、
- Number()
- parseInt()
- parseFloat()
6、
== 相等
=== 嚴格相等
兩等號判等會在比較時進行類型轉換;三等號判等不會進行類型轉換(如果類型不同會直接返回 false )
7、
break 用于強制退出循環體,執行循環后面的語句 跳出循環體
continue 用于退出本次循環,執行下次循環 跳出單次循環
8、
undefined 不能被重寫。但是在局部作用域中,還是可以被重寫的。
所以undefined現常用于全局環境
void 運算符通常只用于獲取 undefined 的原始值,一般使用 void(0)(等同于 void 0)。在上述情況中,也可以使用全局變量undefined 來代替(假定其仍是默認值)。
而 void 可以給任何給定的表達式求值,并返回 undefined,并且 void 不可被重寫,因此void 0是在局部作用域中替代undefined的最佳選擇
9、
console.log(1+1);// 2 在兩個操作數都是數字的時候,會做加法運算
console.log("2"+"4");// 24 兩個參數都是字符串做字符串拼接
console.log(2+"4");// 24 在有一個參數是字符串的情況下會把另外一個參數轉換為字符串做字符串拼接
console.log(+"4");// 4 在只有一個字符串參數的時候會嘗試將其轉換為數字
10、
var a = 1;
a+++a; //輸出3,理解為a++ + a,++運算符比+運算優先級更高,a++結果為1,但是a已經變成了2,所以結果為1+2=3。
typeof a+2;//輸出"number2",typeof的優先級高于+運算,所以輸出字符串number,字符串與數字相加時,數字轉換為字符串,然后字符串拼接就變成"number2"
11. 以下代碼的輸出結果是? 為什么
var a = 1;
var b = 3;
console.log( a+++b );
輸出是4,同上,a++仍是1,1+3=4;
12、遍歷數組
var arr = [3,4,5];
for(i=0;i<arr.length;i++) {
console.log(arr[i]*arr[i])
}
13、
遍歷 JSON, 打印里面的值
var obj = {
name: 'hunger',
sex: 'male',
age: 28
}
for(a in obj){
console.log(a+":"+obj[a])
}