重学javascript 红皮高程(3)

继续啊,继续JS基础知识补全之路。

昨天说到JS的几种数据类型,像我这种脑子不太好使,记不清JS共有几种对象的人,可以这么记,JS这东西根本不支持自定义类型,所以你声明的东西,要么是变量,要么是对象。。。然后面试的时候你就瞎蒙,至少也能蒙对几个。

undefined,它就只有一个值,就是undefined。

使用var声明一个变量,但没给值的时候,它的值就是undefined。

例如,

var xx;
console.log(xx == undefined);
//true

undefined 和 null的区别,网上有很多文章,各种说法也多。

你就记得null是返回一个空对象的引用;undefined返回的是变量没给值的时候。这么回答吧,虽然不全对,但至少不会错。

这里还有个小知识点,我大白话的讲一下,

var xx;

console.log(xx)..会返回undefined,

console.log(xxx);直接打印一个未声明的变量xxx,就报错。

但是,不管这个变量是否声明,你用typeof检测,都能正常返回undefined。。

例如,

var xx;
console.log(typeof xx);//undefined
console.log(typeof bbb);//undefined

这也是JS语言的神奇之处,这里多花点精力就OK啦。

================

Null这个类型,它也是只有一个值,就是null。

刚才说过,null值表示的是一个空的对象引用。所以,你用typeof去检测null的时候,返回的是Object。

================

undefined 和 null它们实际是亲人,因为undefined是从null分出来的。

你看ECMA-262规定,它们的相等性测试要返回true。

所以,为什么undefined会等于null?

没有为什么,就是这样规定的:

console.log( null == undefined );
//true

重学javascript 红皮高程(2)

重学javascript 红皮高程

原文发布于微信公众号 - web前端教室(webfeel)

原文发表时间:2016-03-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏老九学堂

十七个C语言新手编程时常犯的错误及解决方式

C编译的程序对语法检查并不像其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常...

32970
来自专栏JavaQ

深入浅出JDK动态代理(二)

接上篇《深入浅出JDK动态代理(一)》 代理类解密 对于JDK动态代理,生成的代理类是什么样的?为什么调用代理类的任何方法时都一定会调用invoke方法?下面来...

34760
来自专栏xingoo, 一个梦想做发明家的程序员

套接口编程

1 struct in_addr{ 2 in_addr_t s_addr; 3 }; 4 struct sockaddr_in{ 5 ...

21380
来自专栏架构说

c 语言基础知识之一

Q1 : 今天看redis代码 普通的函数都添加static 修改 static int aeApiCreate(aeEventLoop *eventLoop...

292110
来自专栏专注 Java 基础分享

虚拟机字节码执行引擎

所谓的「虚拟机字节码执行引擎」其实就是 JVM 根据 Class 文件中给出的字节码指令,基于栈解释器的一种执行机制。通俗点来说,也就是 JVM 解析字节码指令...

26940
来自专栏向治洪

数据结构是哈希表(hashTable)

哈希表也称为散列表,是根据关键字值(key value)而直接进行访问的数据结构。也就是说,它通过把关键字值映射到一个位置来访问记录,以加快查找的速度。这个映...

235100
来自专栏yang0range

Java的面试基础题(二)

1)特点:存储对象;长度可变;存储对象的类型可不同 2)Collection (1)List:有序的;元素可重复,有索引 (add(index, elem...

19920
来自专栏专注 Java 基础分享

虚拟机字节码执行引擎

所谓的「虚拟机字节码执行引擎」其实就是 JVM 根据 Class 文件中给出的字节码指令,基于栈解释器的一种执行机制。通俗点来说,也就是 JVM 解析字节码指令...

42880
来自专栏云霄雨霁

Java--类和对象之组合和继承

30170
来自专栏Google Dart

Dart语言指南(二) 顶

Dart是一种面向对象的语言 包含类和基于 mixin 的继承两部分。每个对象是一个类的实例, 并且 Object.是所有类的父类。 基于 mixin 的继承指...

29120

扫码关注云+社区

领取腾讯云代金券