类型判断typeof

Javascript类型判断

typeof 运算符的结果值

  • number
  • string
  • boolean
  • undefined
  • function
  • object
  • symbol ES6新增
var fun = function(){};
var obj = {};
var sym = Symbol();

typeof true      // boolean
typeof 1         // number
typeof a         // undefined
typeof 'abc'     // string
typeof fun       // function
typeof sym       // symbol
typeof []        // object
typeof {}        // object
typeof null      // object

typeof 运算符产生的值有 numberstringbooleanundefinedfunctionobjectSymbol 7种类型。而对于arraynull类型,typeof 都判断为object。如何区别arraynullobject

isNull

判断null 类型相对简单。


var isNull = function(value){
    return value === null;
};
isNull(null) // true

isArray

区别数组和对象,可以通过自定义isArray方法。

var isArray = function(value){
    return Object.prototype.toString.apply(value) === '[object Array]';
};

这个方法有个缺陷,就是在识别不同的window或者iframe里构造的数组时会失败。
示例:
父页面存放一个全局变量arr

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

    <script>
        var arr = [1,2,3];
    </script>
    <iframe src="/child"></iframe>
</body>
</html>

子页面获取数组arr后调用isArray方法返回false。

var arr = window.parent.arr;
var isArray = function(value){
    return value &&
    typeof value === 'object' &&
    value.constructor === Array;
};
console.log(isArray(arr));  // false

更好的判断数组方法

var isArray = function(value){
    return Object.prototype.toString.apply(value) === '[object Array]';
};
var arr = window.parent.arr;
var isArray = function(value){
    return Object.prototype.toString.apply(value) === '[object Array]';
};
console.log(isArray(arr));  // true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值