3.JavaScript数据类型
1.概述
JavaScript的数据类型共有六种:
- 数值(number):整数和小数(比如1和3.14)
- 字符串(string):字符组成的文本(比如”Hello World”)
- 布尔值(boolean):true(真)和false(假)两个特定值
- undefined:表示“未定义”或不存在,即此处目前没有任何值
- null:表示空缺,即此处应该有一个值,但目前为空
- 对象(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)
- 相等运算符:=,!,==,!=
- 比较运算符:>,>=,<,<=