版权声明:转载或者引用请标明来源! https://blog.csdn.net/qq575792372/article/details/88039398
1.怎么实现(a == 1 && a==2 && a==3)
- 可以用toString和valueOf方法实现,js会进行隐式转换,这时候会自动调用toStirng和valueOf方法,所以可以用下面的代码实现:
var a = {
i:1,
// 这里也可以用toString()
valueOf(){
return a.i++;
}
}
console.log(a == 1 && a == 2 && a == 3)
// 打印为true
- 利用es6的语法,
var a = [1,2,3];
a.join = a.shift;
console.log(a == 1 && a == 2 && a == 3);
// 打印为true
- 使用with
var i = 0;
with({
get a() {
return ++i;
}
}) {
console.log(a == 1 && a == 2 && a == 3);
}
- 使用es6的Symbol
let a = {[Symbol.toPrimitive]: ((i) => () => ++i) (0)};
console.log(a == 1 && a == 2 && a == 3);// 打印为true
2.["1", "2", "3"].map(parseInt)返回什么?
可以解析为:
var arr = ["1","2","3"];
arr.map((value,index,array) => parseInt(value,index));
//parseInt(string,radix)
parseInt的第二个参数是传递的几进制,所以parseInt(1,0)是1,pareseInt(2,1)是NaN,paresInt(3,2)是NaN,所以结果是1,NaN,NaN。
3.什么是eventloop?
4.var a = "10"; console.log(a-2);等于几,实际结果是8,因为减,乘,除,余,大于,小于这些会自动转换字符串为数字,但是加号不会自动转换,会把后面的转为字符串,会拼加字符串,所以console.log(a+2)的结果是102.
5.记录一些比较坑的题