1.JavaScript定義了幾種數據類型?原始類型與復雜類型的區別
JS語言中共有6種數據類型:
number(數值):整數和小數;
string(字符串):字符組成的文本;
boolean(布爾值):true和false;
undefined:表示未定義或不存在
null:表示空缺,即此處應該有一個值,但目前為空;
object(對象):各種值組成的集合。
(object又可以分成三個子類型:狹義的對象(object)、數組(array)、函數(function)、正則表達式(regexp))
symbol:屬于ES6的規范,是一種特殊的、不可變的數據類型,可以作為對象屬性的標識符使用。
原始類型與復雜類型:
原始類型是最基本的數據類型,不能再細分,包括:number、string、boolean;
復雜類型往往是一個或多個原始類型的值的合集,可以看做是一個存放各種值的容器,包括:object;
undefined和null可看做是兩個特殊的值。
2.typeof和instance of的作用與區別
//typeof用于判斷對于number、string、boolean這幾個原始類型
typeof 123 // "number"
typeof '123' //"string"
typeof false //"boolean"
function f(){}
typeof f //"function"
typeof [] //"object"
//instance of 判斷一個變量是否某個對象的實例,返回布爾值,不能用來判斷字符串和數值。
var o = {};
var a = [];
o instanceof Array //false
a instanceof Array //true
3.如何判定一個變量是否數字、字符串、布爾、函數
用typeof判斷,如題目二。
4.NaN是什么?有何特點?
NaN 屬性是代表非數字值的特殊值。該屬性用于指示某個值不是數字。可以把 Number 對象設置為該值,來指示其不是數字值。
語法
Number.NaN
說明
Number.NaN 是一個特殊值,說明某些算術運算的結果不是數字。
<script type="text/javascript">
var test1="300"
document.write(isNaN(test1))
</script>
上面輸出的是:
false
意思是300的確是一個數字,所以isNaN就是輸出false。
6.==與===的區別
===是嚴格意義的相等,要求類型和值都相等。
==會將類型處理相同再比較值:
null與undefined相等;
數字和字符串,會將字符串轉化為數字,再比較;
ture/false與其他值比較會轉化為1/0;
一個對象與數字或字符串比較,會使用valueOf和toString轉換比較。
7.break與continue有什么區別
break會強制跳出循環,執行循環后面的語句。
continue會跳出本次循環,執行下一次循環。
break是結束整個循環體,continue是結束單次循環.
8.如何把非數值轉化為數值?
Number()
parseInt()
parseFloat()
9.void 0和undefined的應用場景
void 0會執行后面的表達式,并返回undefined,undefined也是同樣的功能,但是某些情況下undefined是可以被賦值的,那么就不能用undefined來判斷了。
10.以下代碼的輸出結果是?為什么?
var a = 1;
a+++a; //輸出3,++運算符比+運算優先級更高,a++結果為1,但是a已經變成了2,所以結果為1+2=3。
typeof a+2;//輸出"number2",typeof的優先級高于+運算,所以輸出字符串number,字符串與數字相加時,數字轉換為字符串,然后字符串拼接就變成"number2"
var a = 1;
var b = 3;
console.log( a+++b );//輸出結果為4,++運算優先于+運算,a++結果為1,運算為1+3=4。
var arr = [3,4,5]
for (var i=0; i<arr.length; i++) {
console.log(arr[i]*arr[i]);
}//輸出結果為9 16 25
var obj = {
name: 'hunger',
sex: 'male',
age: 28
}
for(var i in obj){
console.log(i+":"+obj[i]);
}
結果輸出
"name:hunger"
"sex:male"
"age:28"
var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0
console.log(val) //輸出為"number2",因為typeof優先級最高,所以typeof2 為number,然后和b拼接為"number2",||或只要一個為真就行
var d = 5;
var data = d ==5 && console.log('bb')
console.log(data) //兩個true,輸出后一個"bb"
var data2 = d = 0 || console.log('haha')
console.log(data2)//0代表false,所以執行后面輸出"haha",并且賦值給data2
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)//true+(false+true),結果是1+1,所以輸出2