• 《饿了么大前端 Node.js 进阶教程》—Javascript 基础问题—类型判断


    lodash的类型判断源码

    《饿了么大前端 Node.js 进阶教程》地址:https://github.com/ElemeFE/node-interview

     lodash介绍:lodash是目前很流行的JS工具库,它封装了许多JS常用到的工具方法,在阅读源码时,你会发现代码冗长;官网说这是性能优化,不管你信不信,反正我信了!

    (1)null 类型

    function isNull(value) {

      return value === null;

    }

    (2)number类型

    function isNumber(value) {

      return typeof value == 'number||

        (isObjectLike(value) && baseGetTag(value) == '[object Number]');

    }

    细心地同学会问:“我去,这么长!”,没错,就是这么长。因为Number类型要包含很多种情况在里面;

    例如:这一种new Number()出来的情况,typeof就是个对象

    (3)string类型

    function isString(value){

      const type = typeof value;

      return type == 'string' || (type == 'object' && value != null && !Array.isArray(value) && getTag(value) == '[object String]');

    }

    和判断number类型一样,排除new String()的状况,你会说:Object.prototype.toString.call就一步搞定,但是这会影响性能,反正官网是这么解释的;

    (4)arguments

    function isArguments(value) {

      return typeof value == 'object' && value !== null && getTag(value) == '[object Arguments]';

    }

    (5)function

    function isFunction(value) {

      if (!isObject(value)) {

        return false

      }

      const tag = baseGetTag(value)

      return tag == '[object Function]' || tag == '[object AsyncFunction]' ||

        tag == '[object GeneratorFunction]' || tag == '[object Proxy]'

    }

    主要是增加了对于原生方法的判断

     (6)boolean

    function isBoolean(value) {

      return value === true || value === false ||

        (isObjectLike(value) && baseGetTag(value) == '[object Boolean]')

    }

    总结:总的来说,类型判断是从typeof、Object.prototype.toString.call和值,3个方面来配合进行判断的;

  • 相关阅读:
    QTP err.number
    QTP参数化
    QTP基础
    QTP脚本补录
    QTP添加对象入库
    系统自带计算器自动化
    QTP安装
    App 测试
    本地化和国际化测试
    剑桥雅思写作高分范文ESSAY30
  • 原文地址:https://www.cnblogs.com/sungg/p/6796718.html
Copyright © 2020-2023  润新知