动画:《大前端吊打面试官系列》 之原生 JavaScript 精华篇( 二 )


「类型转换」分为显式类型转换和隐式类型转换 。每种转换又分为原始类型转换和对象类型转换 。
显式类型转换
显式类型转换就是我们所说强制类型转换 。
笔试题:其他数据类型转字符串类型!
对于原始类型来说,转字符串类型会默认调用 () 方法 。
数据类型类型
数字
转化为数字对应的字符串
true
转化为字符串 “true”
null
转化为字符串 “null”
转化为字符串 “”
转化为 “[ ]”
String(123);// "123"String(true);// "true"String(null);// "null"String(undefined);// "undefined"String([1,2,3])// "1,2,3"String({});// "[object Object]"
笔试题:其他数据类型转布尔类型!
除了特殊的几个值 ‘’、 、 NAN、 null、 false、 0 转化为为 false 之外,其他类型值都转化为 true 。
Boolean('')// falseBoolean(undefined)// falseBoolean(null)// falseBoolean(NaN)// falseBoolean(false)// falseBoolean(0)// falseBoolean({})// trueBoolean([])// true
笔试题:转化为数字类型!
数据类型数字类型
字符串
1) 数字转化为对应的数字
2) 其他转化为 NaN
布尔类型
1) true 转化为 1
2) false 转化为 0
null
NaN
数组
1) 数组为空转化为 0;
2) 数组只有一个元素转化为对应元素;
3) 其他转化为NaN
空字符串
Number(10);// 10 Number('10');// 10 Number(null);// 0Number('');// 0Number(true);// 1Number(false);// 0Number([]);// 0 Number([1,2]);// NaNNumber('10a');// NaNNumber(undefined); // NaN
笔试题:对象类型转原始类型!
对象类型在转原始类型的时候,会调用内置的 ()和 () 方法,这两个方法是可以进行重写的 。
转化原始类型分为两种情况:转化为字符串类型或其他原始类型 。
5、四则运算
隐士类型转化是不需要认为的强制类型转化, 自动将类型转化为需要的类型,所以称之为隐式类型转换 。
加法运算
加法运算符是在运行时决定,到底是执行相加,还是执行连接 。运算数的不同,导致了不同的语法行为,这种现象称为“重载” 。
true + true// 21 + true// 2[1] + 3// '13'
1 + 'b'// ‘1b’false + 'b' // ‘falseb’
其他运算
其他算术运算符(比如减法、除法和乘法)都不会发生重载 。它们的规则是:所有运算子一律转为数值,再进行相应的数学运算 。
1 * '2'// 21 * []// 0
6、逻辑运算符
逻辑运算符包括两种情况,分别为条件判断和赋值操作 。
条件判断
true && true// truetrue && false// falsetrue || true// truetrue || false// true
赋值操作
首先看 A 的真假, A 为假,返回 A 的值, A 为真返回 B 的值 。(不管 B 是啥)
console.log(0 && 1) // 0console.log(1 && 2) // 2
首先看 A 的真假, A 为真返回的是 A 的值, A 为假返回的是 B 的值(不管 B 是啥)
console.log(0 || 1) // 1console.log(1 || 2) // 1
7、比较运算符
比较运算符在逻辑语句中使用,以判定变量或值是否相等 。