#50 实现 js 数据类型的判断


  • 0

    //看了前面的原来又int8array这个。。通过了
    @胡子大哈 好吧,忘记js关于typeof的迷之bug。。但是依然没法通过。。
    0_1496413709842_upload-c501a9d7-4814-4824-b54c-79287e779a35


  • 0

    const type = function(obj) {
      if(obj === null) return 'null'
      if(obj === undefined) return 'undefined'
      return obj.constructor.name.toLowerCase()
    }
    

  • 0

    const type = (obj) {
      /* TODO */
      return Object.prototype.toString.call(obj).slice(8,-1).toLowerCase();
    }
    

    这么写有错吗?没有,作者非要装逼用正则
    看看他的和我的差那了

    const type = (obj) => (({}).toString.call(obj).match(/\[object\ (\w+)\]/)[1]).toLowerCase()
    

  • 0

    @stromGui

    这年头用正则都叫装逼的咯- -,

    还有

    const type = (obj) {
    

    记得加个箭头


  • 0

    const type = function (obj) {
      /* TODO */
      var _type = undefined;
      if (obj === undefined) {
        _type = 'undefined';
      } else if (obj === null) {
        _type = 'null';
      } else {
          _type = obj.constructor.name.toLowerCase();
      }
      
      return _type;
    }
    

  • 0

    @CodeHz 思路很棒


  • 0

    const type = (obj) => {
    /* TODO */

    return Object.prototype.toString.call(obj).match(/[object (.*)]/)[1].toLowerCase()
    }


  • 0

    const type = (obj) => {
    /* TODO */
    return Object.prototype.toString.call(obj).toLowerCase().replace(/^[object\s(\w+)]$/, (...rest) => {
    return rest[1]
    })
    }


  • 0

    const type = (obj)=>{
    const type=Object.prototype.toString.call(obj);
    let str=type.replace(/^[object\s([A-z]+)]$/,'$1');
    return str.toLowerCase();
    /* TODO */
    }

    模拟成功了为什么说不正确


  • 0

    @gahing 讲道理,这个就是提问题的人的问题


登录后回复
 

与 ScriptOJ 的连接断开,我们正在尝试重连,请耐心等待