JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值)
- 数值(number):整数和小数(比如1和3.14)。
- 字符串(string):文本(比如Hello World)。
- 布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)。
- undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值。
- null:表示空值,即此处的值为空。
- 对象(object):各种值组成的集合
数值、字符串、布尔值这三种类型,合称为原始类型
对象是最复杂的数据类型,又可以分成三个子类型。
- 狭义的对象(object)
- 数组(array)
- 函数(function)
扩展:
1、js是一种动态语言,随时可修改一个值,但大部分改的是值的引用关系(基础类型均不可修改,修改的为此值的引用关系)
1、查看数据类型使用 typeof,typeof所有返回值均为字符串,返回值有6中,分别为:Undefined、Number、String、Boolean、Object、Function;null返回Object
typeof null; //'object'
typeof undefined; //'undefined'
typeof 123; //'number'
typeof '123'; //'string'
typeof true; //'boolean'
typeof function a(){}; //'function'
typeof {a:1,b:2}; //'object'
//建议typeof后面加括号,看下例
var a = true;
var b= true;
alert(typeof a==b); //false 运算原则:typeof a //boolean,boolean == true //false
alert(typeof (a==b)); //boolean
1、null和undefined
相同点:
- 都只有一个值
- 参与判断都返回false
- null和undefined都没有方法
不同点:
- null为关键字;undefined不是关键字
- null的typeof类型为对象’object’;undefined不是对象,只是一种类型(也可以说是window对象的一个属性)
- null已初始化;undefined未初始化
- typeof查看类型,null的类型为object,undefined的类型为undefined
- null转化为数字为0;undefined转化我数字为NaN
null == undefined; //true
null === undefined; //false
几种返回undefined的场景:
// 变量声明了,但没有赋值
var i;
i // undefined
// 调用函数时,应该提供的参数没有提供,该参数等于 undefined
function f(x) {
return x;
}
f() // undefined
// 对象没有赋值的属性
var o = new Object();
o.p // undefined
// 函数没有返回值时,默认返回 undefined
function f() {}
f() // undefined
备注(实际开发具体使用原则):
1、声明变量可以不赋值,必须赋值时,建议赋值为null
2、检测否一个值是否存在时,使用 ===(全等) undefined
3、使用全等检测某一个值是否为空时,使用null
4、一般开发中做判断,使用二个等号 (==null),关于此种使用的不好的地方后期来讲解
2、布尔值
布尔值只有两个:true 和 false (真和假)
以下6个值会被转化为false,其他都视为true
- null
- undefined
- 0
- -0
- NaN
- “” 或 ‘’(空字符串)
注意:
1、空数组和空对象也为true
2、!! 两个感叹号可以快速转为布尔值