参考自 微信公众号 鱼头的Web海洋
关于这道题目:
var a = ?;
if (a == 1 && b == 2 && c == 3) {
console.log('yes');
}
学习了网上的几种解法,如下:
首先,JS中类型转化只有三种情况:
- 转换为布尔值
- 转换为数字
- 转换为字符串
对象在转换类型的时候,会执行原生方法ToPrimitive
其算法如下:
1.如果已经是原始类型,则返回当前值;
2.如果需要转字符串则先调用toString方法,如果此时是原始类型则直接返回,否则再调用valueOf方法并返回结果;
3.如果不是字符串,则先调用valueOf方法,如果此时是原始类型则直接返回,否则再调用toString方法并返回结果;
4.如果都没有原始类型返回,则跑出TypeError类型错误.
解法如下:
1.
var a = {
arr: [3, 2, 1],
valueOf () {
console.group('valueOf');
console.log(this.arr);
console.groupEn