记录一些特别的js代码

版权声明:转载或者引用请标明来源! 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.记录一些比较坑的题

https://www.jb51.net/article/148788.htm

猜你喜欢

转载自blog.csdn.net/qq575792372/article/details/88039398