zoukankan      html  css  js  c++  java
  • JS中typeof与instanceof的区别

    JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的。但它们之间还是有区别的:

    typeof

    typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。

    它返回值是一个字符串,该字符串说明运算数的类型。typeof 一般只能返回如下几个结果:

    number、boolean、string、function、object、undefined。我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){alert("ok")},而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错,对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。

    console.log(typeof(1));                      // ==> number
    console.log(typeof(NaN));                    // ==> number
    console.log(typeof(Number.MIN_VALUE));       // ==> number
    console.log(typeof(Infinity));               // ==> number
    console.log(typeof("123"));                  // ==> string
    console.log(typeof(true));                   // ==> boolean
    console.log(typeof(window));                 // ==> object
    console.log(typeof(new Array()));            // ==> object
    console.log(typeof(function(){}));           // ==> function
    console.log(typeof(document));               // ==> object    
    console.log(typeof(null));                   // ==> object 
    console.log(typeof(eval));                   // ==> function
    console.log(typeof(Date));                   // ==> function                
    console.log(typeof(sss));                    // ==> undefined
    console.log(typeof(undefined))               // ==> undefined

    instanceof

    instance:实例,例子

    a instanceof b?alert("true"):alert("false"); //a是b的实例?真:假

    instanceof 用于判断一个变量是否某个对象的实例,如:

    var a=new Array();
    console.log(a instanceof Array)     // ==> true    
    console.log(a instanceof Object)    // ==> true  

    可以看到都是返回true,这是因为 Array 即是 Array 的子类也是 Object 的子类;再如:

    function test() {};
    var a = new test();
    console.log(a instanceof test)      // ==> true    

    谈到 instanceof 我们要多插入一个问题,就是 function 的 arguments,我们大家也许都认为 arguments 是一个 Array,但如果使用 instaceof 去测试会发现 arguments 不是一个 Array 对象,尽管看起来很像。

    另外:

    var a=new Array(); 
    a instanceof Object ? console.log('Y') :console.log('N')   // ==> Y

    结果为:Y;

  • 相关阅读:
    Bit Manipulation
    218. The Skyline Problem
    Template : Two Pointers & Hash -> String process
    239. Sliding Window Maximum
    159. Longest Substring with At Most Two Distinct Characters
    3. Longest Substring Without Repeating Characters
    137. Single Number II
    142. Linked List Cycle II
    41. First Missing Positive
    260. Single Number III
  • 原文地址:https://www.cnblogs.com/jone-chen/p/5227304.html
Copyright © 2011-2022 走看看