资讯专栏INFORMATION COLUMN

JavaScript类型系统详解

ruicbAndroid / 1637人阅读

摘要:基本数据类型中有种简单数据类型也称基本数据类型,,,和。不支持任何创建自定义类型的机制,而所有值都是上述中数据类型之一。

基本数据类型

ECMAScript中有5种简单数据类型(也称基本数据类型):Undefined,Null,Boolean,Number和String。还有一种复杂数据类型(引用型)Object。ECMAScript不支持任何创建自定义类型的机制,而所有值都是上述6中数据类型之一。(ps:ES6新增了一种数据类型Symbol,这里不做讨论)

Undefined

值:undefined

出现场景:

使用var声明变量未赋值(相当于var test = undefined;

获取对象不存在的属性

无返回值的函数的执行结果

函数的参数没有传入

void(expression)

类型转换:

- Boolean Number String
undefined false NaN "undefined"
Null

值:null。null值表示一个空对象指针,若定义的一个变量准备将来用来保存一个对象,那么最好将变量初始化为一个null

出现场景:

var test = null;

null表示调用的对象不存在

注意区分null和undefined的区别?

null == undefined;  // true
null === undefined; // false

类型转换

- Boolean Number String
null false 0 "null"
Boolean

值:true or false。

出现场景:

条件语句导致系统执行的隐式装换

定义

类型转换

- number string
true 1 "true"
false 0 "false"
String

值:由单引号或双引号括起来的字符序列

出现场景:定义

类型转换,有两种方法,String()toString()

- Boolean Number
"" false 0
"123" true 123
"a12" true NaN
Number

值:整数和浮点值

出现场景:

类型转换,Number()parseInt()parseFloat()。第一个函数可以应用于任何数据类型,另两个函数专门用于把字符串转换成数值

- Boolean String
0 false 0
1 true 1
Infinity true "Infinity"
NaN false "NaN"
Object

值:一组属性的集合

出现场景:

类型转换

- Boolean Number String
{} true NaN "[object Object]"
类型识别 typeof(操作符,不是函数)

可以识别简单类型(Null除外)

不能识别具体的对象类型(Function除外)

typeof "darko"; //"string"
typeof 123;     //"number"
typeof true;    //"boolean"
typeof undefined;    //"undefined"
typeof null;     //"object"
typeof {name:"darko"};  //"object"

typeof function(){};    // "function"
typeof [];      // "object"
typeof new Date();  //"object"
instanceof(三目运算符)

识别内置对象的类型

不可以识别简单类型

识别自定义对象类型

[] instanceof Array;    //true
/d/ instanceof RegExp; //true

1 instanceof Number;    //false
"abc" instanceof String;  //false
constructor

识别简单类型(undefined和null除外)

识别内置对象类型

识别自定义对象类型

(1).constructor === Number; // true
true.constructor === Boolean; // true

[].constructor === Array;   // true
Object.prototype.toString

可以简单类型和内置对象

不能识别自定义类型

function type(obj){
    return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79052.html

相关文章

  • javascript日期类型(Date)与php日期类型详解

    摘要:注意客户端与服务器日期进行传输的时候一般都是用大整数时间戳进行传输。 前言 一个网站的开发需要要UI、前端、后端三种工程师。现在的企业在招聘前端工程师的时候一般都要求其了解或者掌握一些后端的知识。因此,此文章主要介绍javascript的日期类型,也粗略的介绍一下php的日期类型,以及二者是如何交互数据的。 时间戳 什么是时间戳 时间戳是从格林威治时间1970年1月1日(00:0...

    chemzqm 评论0 收藏0
  • javascript日期类型(Date)与php日期类型详解

    摘要:注意客户端与服务器日期进行传输的时候一般都是用大整数时间戳进行传输。 前言 一个网站的开发需要要UI、前端、后端三种工程师。现在的企业在招聘前端工程师的时候一般都要求其了解或者掌握一些后端的知识。因此,此文章主要介绍javascript的日期类型,也粗略的介绍一下php的日期类型,以及二者是如何交互数据的。 时间戳 什么是时间戳 时间戳是从格林威治时间1970年1月1日(00:0...

    BDEEFE 评论0 收藏0
  • JavaScript深入浅出

    摘要:理解的函数基础要搞好深入浅出原型使用原型模型,虽然这经常被当作缺点提及,但是只要善于运用,其实基于原型的继承模型比传统的类继承还要强大。中文指南基本操作指南二继续熟悉的几对方法,包括,,。商业转载请联系作者获得授权,非商业转载请注明出处。 怎样使用 this 因为本人属于伪前端,因此文中只看懂了 8 成左右,希望能够给大家带来帮助....(据说是阿里的前端妹子写的) this 的值到底...

    blair 评论0 收藏0
  • 【连载】前端个人文章整理-从基础到入门

    摘要:个人前端文章整理从最开始萌生写文章的想法,到着手开始写,再到现在已经一年的时间了,由于工作比较忙,更新缓慢,后面还是会继更新,现将已经写好的文章整理一个目录,方便更多的小伙伴去学习。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 个人前端文章整理 从最开始萌生写文章的想法,到着手...

    madthumb 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<