zoukankan      html  css  js  c++  java
  • 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);
    

      

    结果:

      

     

      本人:小白一枚,第一次写博客,有什么写错的地方,请各位大神指点出来,必定虚心学习

  • 相关阅读:
    Eclipse SVN插件设置
    经典语录-每日积累-05
    Shell基础语法,运算符,循环和判断语句和设置启动参数
    iOS-Jenkins自动化打包集成
    App版本升级相关
    Java-数组和集合简单使用
    Java-内部类简单使用
    Callkit被拒
    Java-Finalize(GC)和类与类和接口之间的关系
    经典语录-每日积累-04
  • 原文地址:https://www.cnblogs.com/bailaotou/p/9921070.html
Copyright © 2011-2022 走看看