(1)JavaScript有六种基本数据类型(数值、字符串、Boolean、undefined、null、Symbol)。一种复杂数据类型object(细分有object、array、function、date)
(2)undefined和null类型:
undefined的值只有一个就是undefined,当我们声明了变量未定义初始值时,就相当于赋予了变量undefined值。
let n1;
console.log(n1 === undefined);//true
console.log(typeof(n1));//undefinde
null表示为一个空指针对象(这也是给typeof传递一个null会返回对象的原因),在定义将来要保存对象的变量时,建议使用null来初始化,不要使用其他的值。这样做的好处是只要检查这个变量的值是不是null就可以知道他是不是被重新赋予了一个对象引用。这里注意 因为undefined是由null值派生而来的,所以在使用 == 运算符进行比较时候会返回 true,而用 === 运算符比较则可以返回false。
(3)Boolean类型
Boolean类型是JavaScript使用最频繁的类型之一,有两个字面值:tru 和 false。虽然布尔的值只有两个但是其他类型的值都有对应的布尔转换表现形式。
let message = "Hello World";
console.log(Boolean(message));//true
下面进行了一个整理
数据类型 转换为 true 的值 转换为 false 的值
Boolean true false
String 非空字符串 ""(空字符串)
Number 非零数值(4包括无穷值) 0、NaN
Object 任意对象 null
Undefined N/A(不存在) undefined
(4)Number类型
JavaScript里不会区分整数和浮点数,统一用Number表示。
计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等,它们和十进制表示的数值完全一样。
Number可以直接做四则运算,规则和数学一致。
以下都是合法的number初始化
123;//整数
1.2;//浮点数
12345e3;//科学计数法等同于1.2345*1000
-99;//复数
NaN;/意思是“不是数值”,当无法计算结果时候表示为NaN
Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity
数值转换:
有三个函数可以提供给我们将非数值类型的值转换为数字类型,parseInt()、Number()、parseFloat()。
例:
let num1 = Number(undefined); //NaN
let num2 = Number(null);//0
let num3 = Number("hello world");//NaN
let num4 = Number(true);//1
let num5 = Number({name:"林"})//NaN
console.log(num1,num2,num3,num4,num5);
(5)对象
JavaScript对象是由一组 健-值组成的无序集合,键值对之间用,分隔(最后一组键值对可以不加,)。在编写代码的时候属性名尽量用标准的变量名,便于我们直接通过对象名.属性名来访问我们的属性值。所有属性对应的都是字符串,而值可以是任意数据类型。如果访问一个不存在的属性会返回undefined。
const person = {
name:"张三",
age:20,
city:"福州"
}
我们也可以自由的通过 对象名.属性 给对象动态赋值属性
const person = {
name:"张三"
}
person.age = 20;//动态添加属性age
console.log(person);//[object Object]: {age: 20, name: "张三"}
所有的对象顺着原型链继承都具有object(基类)上的属性和方法。
(6)Symbol
ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是
JavaScript 语言的第七种数据类型。
Symbol有以下这些特点:
1. Symbol 的值是唯一的,用来解决命名冲突的问题,即使参数相同。
2.Symbol 值不能与其他数
3.Symbol 定义的对象属性不参与 for…in/of 遍历,但是可以使用进行运算。