Post

JavaScript Data Types--undefined、null、boolean

ECMAScript中有5+1种类型

基本数据类型或者原始数据类型

  • Boolean
  • Number
  • String
  • Null
  • Undefined

其他所有的统称为对象

  • Object

    只有对象才有方法

/assets/img/1.png

在js中,任何两个独立的对象都不相等。如果想要比较的话,也是去比较对象的引用。 lodash里面的方法 由于js的数据类型具有动态性,因此的确没有再定义其他数据类型的必要了。

基本数据类型不可改变,

1.1 typeof操作符

typeof方法是一个操作符,不是一个函数。 typeof方法返回以下字符串

  • “undefined”
  • “boolean”
  • “string”
  • “number”
  • “object”
  • “function” 建议书写方法时将typeof整个表达式用括号括起来。否则会有些问题有些时候会有问题。 请看如下代码
1
2
3
Var a = true;
Var b = true;
Console.log(typeof a == b)

你认为以上代码输出结果是什么? boolean ? false? /assets/img/2.png

1.2 Undefined 和 null

相同点

  • 都只有一个值
  • 参与判断,都返回false
  • 都没有方法 不同点
  • 在js中,null是一个关键字,undefined不是关键字
  • null是个对象,undefined不是一个对象,本质是window的一个属性
  • undefined是为初始化的,null是已经初始化的
  • typeof, null返回“object”,undefined 返回“undefined”
  • 当你把null转化成一个数字的时候会返回一个0, undefined会返回NaN /assets/img/3.png

那么这两个值在什么在实际开发中如何使用呢?

  • 声明一个变量时可以不赋值,但是如果你不知道怎么给这个变量赋值,可以赋值null
  • 全等,检测某个值是否存在时,可以用undefined
  • 全等,检测一个值是否为空时,用null

undefeated主要目的是用于比较。ECMA-262第三版引入这个值时为了正式区分空对象指针与未经初始化的变量

` typeOf null // object`

typeof undefind // undefind

在存储变量的时候,是以二进制存储在内存中的,JS解释器在编译代码的时候,当你调用typeof的时候,它会去识别二进制的前三位,如果都是0,就会认为它是对象。null转化成二进制,全都是0,所以typeof null是 object,这是JS中的一个bug;这也是为什么又有undefined。

跟其他语言不一样的地方,其他语音只有null表示空值。JS中有两个类型表示空值,null 和 undefined

1.3 Boolean类型

有两个值,true和false,主要用途是用于判断或者对结果进行比较。

在js中,所有的数据类型都可以转化成boolean类型。

1
Boolean(123)// true

只有6个值会转换成false, 其他都是true

这6个值时0,-0,undefined,null,‘’,NaN /assets/img/4.png

如果你觉得书写boolean比方麻烦,也可以用两个!!来代替

This post is licensed under CC BY 4.0 by the author.