数据类型
(1)一共有7种数据类型
基本类型
- Null
- Undefined
- Number
- String
- Boolean
- Symbol
引用类型
- Object
(2)一共有6个值会转化成false, 其他都说true
undefined
null
0
-0
NaN
""
(3)Undefined 类型只有一个值undefiend, 表示未定义或不存在。
(a)声明一个变量没有赋值
(b)对象不存在的属性
(4)Null类型只有一个值null, 表示空值。null表示空对象指针,如果我们声明一个变量,之后打算用来表示一个对象,推荐把他赋值为null。
(5)重要的特殊对象
Function Array Date Regexp Global Error
(6)typeof 的结果是小写string。
typeof 有两个特例:
(a) typeof null 结果为object
typeof null => object
(b) typeof 函数结果为function
var abc = function(){}
typeof abc => function
(7)基本类型按值访问,引用类型按引用访问
(a)基本类型存储在栈中,引用类型存储在堆中
(b) 值的复制:复制基本类型的值,两个变量完全独立;复制引用类型的值,只是复制它的引用地址,两个变量将指向同一个对象
(c) 值的比较:基本类型的值比较是值的比较,引用类型的比较是比较引用地址,当且仅当它们指向同一个对象才相同。
类型转换
隐式类型转换
(1)Number + String -> 把Number转换成字符串
(2)Number - String -> 把String转换成Number
(3)(3.1415).toFixed(2) -> 把Number转换成对象
(4)“hello world”.split() -> 把String转换成字符串对象
(5)if 语句把条件部分转变成 true 或 false
显示类型转换
(1)Number() 把字符串转化成数字
(2)String() 把括号里的内容转化成字符串
(3)Boolean()把括号里的内容转化成true或false
(4)PaserInt() 和paseFloat() 把字符串转化为数字
(5)!!可以取到对应的boolean
类型识别
(1)typeof
- 可以识别基本类型(Null除外)
- 不能识别具体的对象类型(Function 除外)
(2)instanceof
- 不能识别基本类型
- 可以识别内置对象类型
- 可以识别自定义对象类型
- A instanceof B 检测 B 是否存在 A 的原型链中。JavaScript引擎查找B的Protype是否存在于A的原型链中(——proto——)
(3)Object.prototype.toString.call
- 可以识别基本类型
- 可以识别内置对象类型
- 不可以识别自定义对象类型
(4)constructor
- 可以识别基本类型(Undefined/Null除外)
- 可以识别内置对象类型
- 可以识别自定义对象类型
参考资料
网易云课堂前端微专业