zoukankan      html  css  js  c++  java
  • JavaScript基础巩固系列——3种确定数据类型的方法

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/13666885.html, 多谢,=。=~(如果对你有帮助的话请帮我点个赞啦)

    重新学习JavaScript是因为当年转前端有点儿赶鸭子上架的意味,我一直在反思我的知识点总是很零散,不能在脑海中形成一个完整的体系,所以这次想通过再次学习将知识点都串联起来,结合日常开发的项目,达到温故而知新的效果。与此同时,总结一下我认为很重要但又被我遗漏的知识点~

    JavaScript 有三种方法,可以确定一个值到底是什么类型:

    typeof运算符

    • 用法:typeof [value]
    • 返回值:number(数值)、string(字符串)、boolean(布尔值)、function(函数)、undefined(undefined)、object(对象)
    • 特殊用法:用于检查没有声明的变量而不报错
    • 例子:
    typeof 123 // "number"
    typeof '123' // "string"
    typeof false // "boolean"
    function f() {}
    typeof f // "function"
    typeof undefined // "undefined"
    typeof v // "undefined"
    typeof window // "object"
    typeof {} // "object"
    typeof [] // "object"
    

    PS:typeof null返回object

    instanceof运算符

    • 用法:[A] instanceof [B],用来验证一个对象是否为指定的构造函数的实例
    • 返回值:true、false
    • 特殊用法:用于区分对象和数组
    • 例子:
    var o = {};
    var a = [];
    o instanceof Array // false
    a instanceof Array // true
    

    Object.prototype.toString方法

    • 用法:Object.prototype.toString.call(value),返回当前对象对应的字符串形式,默认情况下返回类型字符串"[object object]"(第二个值表示该对象的构造函数)
    • 返回值:"[object type]"
    • 特殊用法:用于比typeof更精准的数据类型判断
    • 例子:
    //数值:返回[object Number]
    //字符串:返回[object String]
    //布尔值:返回[object Boolean]
    //undefined:返回[object Undefined]
    //null:返回[object Null]
    //数组:返回[object Array]
    //arguments 对象:返回[object Arguments]
    //函数:返回[object Function]
    Object.prototype.toString.call(Math) // "[object Math]"
    //Error 对象:返回[object Error]
    //Date 对象:返回[object Date]
    //RegExp 对象:返回[object RegExp]
    //其他对象:返回[object Object]
    
    //一个比typeof运算符更准确的类型判断函数
    var type = function (o){
      var s = Object.prototype.toString.call(o);
      return s.match(/[object (.*?)]/)[1].toLowerCase();
    };
    
    type({}); // "object"
    type([]); // "array"
    type(5); // "number"
    type(null); // "null"
    type(); // "undefined"
    type(/abcd/); // "regex"
    type(new Date()); // "date"
    
    //专门判断某种类型数据的方法
    ['Null',
     'Undefined',
     'Object',
     'Array',
     'String',
     'Number',
     'Boolean',
     'Function',
     'RegExp'
    ].forEach(function (t) {
      type['is' + t] = function (o) {
        return type(o) === t.toLowerCase();
      };
    });
    
    type.isObject({}) // true
    type.isNumber(NaN) // true
    type.isRegExp(/abc/) // true
    

    参考资料

    JavaScript 语言入门教程 :https://wangdoc.com/javascript/index.html

  • 相关阅读:
    ffmpeg
    HDU 1031 Design T-Shirt
    HDU 1029 Ignatius and the Princess IV
    HDU 1022 Train Problem I
    HDU 1017 A Mathematical Curiosity
    HDU 1015 Safecracker
    HDU 1002 A + B Problem II
    HDU 1070 Milk
    高精度算法(一)
    codeblocks 使用心得
  • 原文地址:https://www.cnblogs.com/dreamsqin/p/13666885.html
Copyright © 2011-2022 走看看