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、!! 两个感叹号可以快速转为布尔值