1.分號與換行 這個例子看上去沒有什麼不同,但是實質上,確實是不同的。第一個輸出結果為一個object ,而第二個輸出結果為undefined。為什麼? 因為Js中是不需要分號和換行這個東西的,第二個會被解析成: 所以實質上返回的是一個undefined。 2.五大類型中,關於null Js有五大數 ...
1.分號與換行
function fn1(){ return { name: 'javascript' }; } function fn2(){ return { name: 'javascript' }; } var obj1 = fn1(); var obj2 = fn2(); console.log(obj1); console.log(obj2);
這個例子看上去沒有什麼不同,但是實質上,確實是不同的。第一個輸出結果為一個object ,而第二個輸出結果為undefined。為什麼?
因為Js中是不需要分號這個東西的,第二個會被解析成:
function fn2(){ return ; { name: 'javascript' }; }
所以實質上返回的是一個undefined。
2.五大類型中,關於null
Js有五大數據類型boolean,string,number,undefined,object。而為什麼
typeof null
會被解析為 object 呢?
原因是在電腦底層存儲數據時是以二進位格式進行存儲的,如果前三位為0的話會被解析為object數據類型。而null的所有位數都為0,當解析null時,前三位先被解析,電腦錯認為null為object類型,這屬於電腦語言層面的一個bug。
3.關於undefined
undefined是Undefined數據類型的實例,雖然它在實際應用過程中並不能用來存儲數據,但我們可以對他進行一些操作。
當我們 對Undefined數據類型名進行類型檢測時
var Undefined = 10; var String=10; console.log(typeof Undefined); console.log(typeof String);
顯示結果為 :number number。這是因為Undefined並不是關鍵字和保留字。如果對關鍵字進行聲明,會報錯。
當我們對他進行數據類型檢測時
console.log(typeof undefined)
顯示結果為undefined。
當我們對其他數據類型進行類型檢測時
console.log(typeof Object); console.log(typeof Number); console.log(typeof String); console.log(typeof Boolean);
顯示結果卻不是數據類型本身的類型,而是function;
但是由於undefined並不是關鍵字和保留字,所以我們可以重新聲明它
var undefined = 10; var string=10; console.log(typeof undefined); console.log(typeof string);
顯示結果為:number number;可見undefined具有不變值的屬性。同時開頭字母小寫的
var undefined = 10; var string=10; var boolean=10; var object=10; var number=10; console.log(typeof undefined); console.log(typeof string); console.log(typeof object); console.log(typeof boolean); console.log(typeof number);
顯示結果為:undefined number number number number 。可見同名且首字母小寫的數據類型實例只有undefined一個,其他的都不是。
4.在JavaScript中不存在重載函數
有一定後端知識的同學都知道在C++和Java中都存在函數重載,
而JavaScript中卻不存在函數重載,如果出現了,後者會把前者覆蓋。而且函數聲明會提升。
思維訓練:有一個人花了800元買了一個游戲賬號,又以900元賣出去,然後以1000元買回來,以1100賣出去,請問:這個人賺了多少錢?