这是一个帮助您系统学习JavaScript编程语言的课程,该课由浅入深的介绍JavaScript的语言特性,结合实际例子解析常见误区,启发你的思考,帮助学习者从入门到掌握,提升您的 JavaScript 技能。
原始类型(Number类型、String类型、boolean类型、null类型、undefined类型)、Object类型
-
number
-
string
-
boolean
-
null
-
undefined
-
object对象(Function、Array、Date...)
新类型划分:
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。
JavaScript的数据类型是非常弱的(不然不会叫它做弱类型语言了)!在使用算术运算符时,运算符两边的数据类型可以是任意的,比如,一个字符串可以和数字相加。之所以不同的数据类型之间可以做运算,是因为JavaScript引擎在运算之前会悄悄的把他们进行了隐式类型转换。
// +字符串拼接
var x = 'The answer is ' + 42;
var y = 42 + ' is the answer';
// 先将'37'转化为整型,再相减
'37' - 7 = 30
// 字符串拼接
'37' + 7 = 377
var num
// 把num转为整型
num - 0
// 把num转为字符串
num + ''
// js会先将字符串转换为数字再进行比较
'1.23' == 1.23
0 == false
null == undefined
new Object() == new Object()
[1, 2] == [1, 2]
首先判断等号两边的类型,类型相同再比较值。类型不同,则不等,为flase;类型相同且值相等,则为true。
-
类型不同,返回false
-
类型相同:
null === null // true
nudefined === undefined // true
NaN !== NaN // true
new Object !== new Object // true
-
类型相同,
==
同===
-
类型不同,尝试类型转换和比较:
- null == undefined 相等
null == undefined // true
- number == string // 转number
1 == '1.0' // true
- boolean == ? // 转number
1 == true // true
- object == number | string // 尝试对象转为基本类型
new String('hi') == 'hi' // true
- 其他false
-
typeof
-
instanceof
-
Object.prototype.toString
-
constructor
-
duck type
适合基本类型的判断
typeof 100 | "number" |
---|---|
typeof true | "boolean" |
typeof function | "function" |
typeof undefined | "undefined" |
typeof new Object() | "object" |
typeof [1, 2] | "object" |
typeof NaN | "number" |
typeof null | "object" |
笔记作者:capricorncd
主页:https://github.com/capricorncd
原讲师:Bosn