JavaScript中 奇怪的typeof解析 (Null, Array)


在JavaScript中,我們常常用到typeof 來判斷一個元素的類型,但是在實際開發中我們會發現一個很難受的問題。

 

      Null,Array      (孤立他倆)

 

 在 typeof Null 和  typeof Array中 居然返回的是 Object類型,。。。。。。。

 

   納尼!!!上去就給他倆一個反抽!!難道是哪里寫錯了么????

 

原來是因為,javascript在當初設計的時候出現的BUG (突然感覺自己很牛掰)。

 

在 ES6制定 中曾有關於修復此 bug 的提議,提議中稱應該讓 typeof Null === 'null', 但是最后因為考慮到歷史積累代碼牽扯范圍太廣,責任重大取消這一個更改,也就是說這不在是一個

BUG了,而是龜ding。而對於Array,typeof本着萬物皆對象的原則,返回的結果就是 Object了  (原因其實很復雜,設計到Javascript的底層二進制解析,感興趣可以在網上查下,資料很多

 

那么問題來了,在我們實際開發中,需要准確的區別 Number,Array,Object,String,Null,undefined甚至是funtion的時候怎么辦??????????

 

廢話說了這么多,進入正題 (代碼奉上)

  

//  
		function typeOf (obj) {
		    return toString.call(obj).slice(8, -1)
		};

		//
		let fun = function () {
			console.log (123);
		}
		//
		let objs = typeOf ({key: '123', val: '345'});
		let num =  typeOf (123);
		let str =  typeOf ('我是個字符串');
		let arr =  typeOf ( ['11', '22', '33']);
		let nulls = typeOf (null);
		let un = typeOf (undefined);
		let funs = typeOf (fun);

		console.log (objs, num, str, arr, nulls, un, funs);

 

  

 

 

結果:

  

 

  本人:小白一枚,第一次寫博客,有什么寫錯的地方,請各位大神指點出來,必定虛心學習

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM