JS基础篇--数据类型概述

最近在夯实基础,做一些笔记。

JS是一种弱类型语言,它的变量类型可以随时改变;JS共有六种数据类型(算上ES6新增的symbol共有七种,目前还没用到,先不讨论),分别为:

数值型(如:1,21.2,0.02,0.2e);

字符型(如:"aaa","1.2.3");

布尔型(true,false);

null(表示空值);

undefined(表示“未定义”或不存在);

对象(Object)。

其中,数值型,字符型和布尔型属于“原始类型”,表示它们是最基本的类型,不能再细分了

null和undefined属于特殊值

对象则可以细分为:函数(function),狭义上的对象(object),数组(array)

这里有一个比较坑的点是,null也是属于object,这就涉及到了js的历史,因为js最初是只有五种类型,null被归为object的一种特殊值,后来null独立了(freedom!!),但是已经被用的时间很长了,为了广大程序员们的头发,所以也就将错就错用到现在:)

与之相关的,就是如何判断数据类型了:

主流的共有两种:typeof, instanceof,

特殊情况有两种:对象的constructor属性,Object.protoType.toString()

1.typeof  基础用法:typeof xxx; 返回的是一个字符串,值一般为“string”,"boolean","number","object","function","undefined"

   这是最简单也最常用的方法,缺点是第一无法分辨object和array,判断结果均为object,第二当array为[]或object为{}时,判断仍为object

   小技巧:由于typeof判断未定义的值不会报错,所以可以用来进行判断值是否被定义,如:

   if(aa == "undefined")//由于aa未定义,所以会报错;

   换成这样:if(typeof aa =="undefined")//这样就不会报错了。

2.instanceof  用来检测一个构造函数的prototype属性所指的对象是否存在于另一个对象的原型链上,涉及到原型链总感觉有点复杂,但是由于这个常被用来给typeof补漏,所以常用的还比较简单:),返回值只有true和false

   基础用法:a instanceof Array //返回true or false

   复杂用法:1.可以用来判断a是否为b的实例;2.最重要的是可以判断a是否为b的继承者【简单说一下,详细的以后再补充】

3.constructor属性 返回对创建此对象的数组函数的引用。

用法:a constructor //返回引用类型,如Array

原理后续补充

4.Object.protoType.toString()

用于检测在跨框架页面中的数组。原理就是在不同框架中创建的数组不会相互共享其prototype属性

用法:Object.prototype.toString.call([]); // 返回 “[object Array]”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值