为了账号安全,请及时绑定邮箱和手机立即绑定

1. 操作符 typeof 与 instanceof 合用,判断javascript数据类型

标签:
Html5

真正毕业也一年多了,好多知识点都没有当初记得那么牢固,每次用到的知识,也总是不够十分确定,于是乎,买书,看书,总结。

这篇文章只是总结下,之前掌握不扎实的东西,先拿令我印象最深的花旗外资面试,问我的关于typeof的知识点,不妨做个总结。

该文章涉及的知识点如下:

javascript数据类型
  • 5种基本数据类型,分别为UndefinedNullNumberStringBoolean

其中: 只声明未赋值未定义 的为undefined。

Null 代表一个空的对象,如果提前声明一个变量用于后期存放对象,最好初始化为null

另外 null == undefined 返回为true。

同时 "" == 0 返回也为true。

Number中特殊的NaN,需注意一切与NaN相关的操作都为NaNNaN与任何数据都不相等,包含其本身

String类型注意,最外层 要么使用单引号,要么使用双引号,不要开头单引号、结尾双引号,例如var str = 'zz123";

注意多个单双引号嵌套

转换为String,可以使用 toString()String()

nullundefined不支持toString(),可以使用String(),返回的是"null"和"undefined"。

简单粗暴的直接使用加号,如变量名 + ""

Boolean布尔类型,只返回true或false,注意与"true"或"false"区别。

  • 基本数据类型特点:
    栈内存,复制的时候,相互独立互不影响,改变前一个后一个不会受到影响。

  • 1种复杂的数据类型,引用类型,即object。
    堆内存指针引用的是内存地址,内存地址的值发生改变,其他引用的地方也会改变。

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <title>Document</title></head><body>
    <script>
        var name = "zmh", age = 24, isBoy = true, mobile, myInfos = null;        var myFruits = ['苹果', '橙子', '火龙果'];        var myfun = function(){}; 
        var pattCardId = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;        var newDate = new Date();        function checkDataTypes(){            var len = arguments.length;            for(var i = 0; i < len; i++){                var str = typeof arguments[i];                switch(str) {                    case 'string':                        console.log(arguments[i] + "-->是字符串类型!");                        break;                    case 'number':                        console.log(arguments[i] + "-->是数字类型!");                        break;                    case 'boolean':                        console.log(arguments[i] + "-->是布尔类型!");                        break;                    case 'undefined':                        console.log(arguments[i] + "-->是未定义类型!");                        break;                    case 'function':                        console.log(arguments[i] + "-->是函数对象类型!");                        break;                    case 'object':                        if(arguments[i] == null){                             console.log(arguments[i] + "-->是空对象类型!");                             break;
                        }else{                              if(arguments[i] instanceof Array){                                    console.log(JSON.stringify(arguments[i]) + "-->是数组对象类型!");                                    break;
                              }else if(arguments[i] instanceof RegExp){                                    console.log(arguments[i] + "-->是正则对象类型!");                                    break;
                              }else if(arguments[i] instanceof Date){                                    console.log(arguments[i] + "-->是日期对象类型!");                                    break;
                              }else{                                    console.log(arguments[i] + "-->是其他非空对象类型!");                                    break;
                              }
                        };                    default:                        console.log(arguments[i] + "-->是未知类型!");
                }
            }
        }

        checkDataTypes(name, age, isBoy, mobile, myInfos, myFruits, myfun, pattCardId, newDate);    </script></body></html>

webp

判断js数据类型.png

  • 逗号操作符,可用于批量声明变量。

  • 函数中的arguments对象。

  • switch使用的是全等比较,不存在类型转换。

  • case可使用表达式

  • 每个case,跟一个break,阻止继续向下执行无用逻辑。

  • typeof是操作符,不是一个函数,但typeof XXtypeof(XX) 等效,不会报错。

  • typeof 对nullobject,返回均为object,所以判断object要排除null

  • typeof 对函数,返回function。

  • 但是null 与undefined派生关系,所以 null == undefined返回true。要先排除undefined,然后排除null。

  • instanceof 用于判断原型,但是array、regExp、date也是Object,所以判断具体是Array、RegExp、Date之前不能先判断Object

  • 如果是对象,可以直接使用console.log(), 看输出结果是[object,object] 还是[object,array]等等,不建议用。

  • JSON.stringify() 可以把对象内容打印出来。

  • breakcontinuereturn 区别。



作者:_信仰zmh
链接:https://www.jianshu.com/p/c73d12f590d5


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消