javaScript通关手册

前端通关手册

Javascript

ES3

a = [],a.push(...[1, 2, 3]) ,a = ?

面试高频指数:★ ☆ ☆ ☆ ☆

a = [1, 2, 3],考核点如下:

[].push:调用数组 push 方法
apply:
第一参数:指定 push 执行时的 this,即正在调用 push 的对象为数组 a
第二参数:传入数组或类数组对象作为参数数组,展开作为 push 的参数列表
push的语法:支持将一个或多个元素添加到数组末尾

arr.push(element1, ..., elementN)

综上,题目等同于

a.push(1, 2, 3) // [1, 2, 3]

a = ?, a1 && a2 && a==3 成立

面试高频指数:★ ★ ★ ★ ☆

== 会触发隐式转换,=== 不会
对象转字符串
先尝试调用对象的 toString()
对象无 toString()或 toString 返回非原始值,调用 valueOf() 方法
将该值转为字符串,并返回字符串结果
否则,抛出类型错误
对象转数字
先尝试调用对象的 valueOf(),将返回原始值转为数字
对象无 valueOf() 或 valueOf 返回不是原始值,调用 toString() 方法,将返回原始值转为数字
否则,抛出类型错误
对象转布尔值
True
代码

const a = {
	count: 0,
	valueOf() {
		return ++this.count
	}
}

数组

隐式转换会调用数组的 join 方法,改写此方法

const a = [1, 2, 3]
a.join = a.shift
上一篇:Java随笔-大数


下一篇:Java+Swing实现中国象棋游戏