1、JavaScript中 数据类型有以下七种:
-
number (数值)
整数和小数(比如1和3.14) -
string (字符串)
JS中字符串类型用于表示文本数据,比如“Hello World” -
boolean (布尔值)
布尔表示逻辑的真伪,可以有两个值:true
(对)和false
(错)。 -
null (空值)
null 即此处的值为空 -
undefined (未定义)
一个没有被赋值的变量会有个默认值undefined
-
symbol (在ECMAScript 第6版新定义)
每个从Symbol()返回的symbol值都是唯一的,唯一目的就是作为对象属性的标识符 -
object (对象)
对象可以被看作是一组属性的集合,即一组“键值对”(key-value)的集合,是一种无序的复合数据集合
2、值有类型,变量没有类型
需要注意的是,在JavaScript中,值(即数据)是有类型的,但变量是没有类型的。
var foo = "falali"; // `foo` 现在的值是一个字符串
foo = false; // `foo` 现在是一个boolean值
foo = 430;// `foo` 现在又变成了一个number
我们可以看到,变量foo
是没有确切类型的,可以任意赋不同数据类型的值。变量可以包含任意值,这些值具有类型。
3、如何判断一个值的数据类型?
为什么要判断一个值的数据类型?
:满足函数多态的需求。对一些不确定的值操作时,为了避免发生错误,在操作之前加一个数据类型判断,再根据相应类型来进行不同的操作。
typeof运算符
最常用的是 typeof
运算符,可以查询给定值的数据类型
string, boolean, number,undefined
- typeof返回为相应原始类型;
null
- object (历史遗留问题);
object
- object;
function
- function (理论上来说function是object,typeof应该返回object,但返回的其实是function,以确保与ECMAScript 2015规范之前创建的ECMAScript代码兼容。)
Tips:1、typeof的返回值是一个字符串,有时候在浏览器里会把引号省略掉
2、instanceof可以用来检测引用数据类型,返回值是一个布尔值