3.JavaScript数据类型

1.概述

JavaScript的数据类型共有六种:

  1. 数值(number):整数和小数(比如1和3.14)
  2. 字符串(string):字符组成的文本(比如”Hello World”)
  3. 布尔值(boolean):true(真)和false(假)两个特定值
  4. undefined:表示“未定义”或不存在,即此处目前没有任何值
  5. null:表示空缺,即此处应该有一个值,但目前为空
  6. 对象(object):各种值组成的集合

通常将数值、字符串、布尔值称为原始类型的值,即他们是基本的数据类型,不能再细分了。而将对象称为合成类型的值,因为一个对象往往是多个原始类型的值得合成,可以看作是一个存放在各种值的如容器。至于undefined和null,一般将他们看成两个特殊的值。

对象又可以分成三个子类型。

  • 狭义的对象
  • 数组
  • 函数

狭义的对象和数组是两种不同的数据组合方式,而函数其实是处理数据的方法。JavaScript把函数当成一种数据类型,可以像其他类型的数据一样,进行赋值和传递,这为编程带来了很大的灵活性,体现了JavaScript作为“函数式语言”的本质。

这里需要明确的是,JavaScript的所有数据,都可以视为广义的对象。不仅数组和函数属于对象,就连原始类型的数据(数值、字符串、布尔值)也可以用对象方式调用。为了避免混淆,此后除非特别声明,本教程的”对象“都特指狭义的对象。

本教程将详细介绍所有的数据类型。undefined和null两个特殊值和布尔类型Boolean比较简单,将在本节介绍,其他类型将各自有单独的一节。

2.typeof运算符

JavaScript有三种方法,可以确定一个值到底是什么类型。

  • typeof 运算符
  • instanceof 运算符
  • object.prototype.toString 方法

instanceof运算符和Object.prototype.toString方法,将在后文相关章节介绍。这里着重介绍typeof运算符。

typeof运算符可以返回一个值得数据类型,可能有以下结果:

2.1.原始类型

数值、字符串、布尔类型分别返回number,string,boolean

2.2.函数

函数返回function
function f(){}
typeof f //function

2.3.undefined

undefined返回undefined
利用typeof可以检查一个没有声明的变量,而不报错。

3.null和undefined

3.1概述

null与undefined都可以表示'没有',含义非常相似。将一个变量赋值为undefined或null,老实说,语法效果几乎没有区别。

var a=undefined;
var a=null

//上面的两种写法基本是等价的。

3.2用法和含义

对于null和undefined,可以大致可以像下面这样理解。

null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null。比如,某个函数接受引擎抛出的错误作为参数,如果运行过程中未出错,那么这个参数就会传入null,表示未发生错误。
// 变量声明了,但没有赋值
var i;
i // undefined

// 调用函数时,应该提供的参数没有提供,该参数等于undefined
function f(x) {
  return x;
}
f() // undefined

// 对象没有赋值的属性
var  o = new Object();
o.p // undefined

// 函数没有返回值时,默认返回undefined
function f() {}
f() // undefined

4.布尔值

布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。

下列运算符会返回布尔值:

  • 两元逻辑运算符: && (And),|| (Or)
  • 前置逻辑运算符: ! (Not)
  • 相等运算符:=,!,==,!=
  • 比较运算符:>,>=,<,<=