题1:在{}定义与外部变量重名的函数
var a = 0
if(true){
a = 1
function a(){}
a = 21
console.log('内部', a, window.a)
}
console.log('外部', a, window.a)
结果输出: 内部 21 1 外部 1 1
题二:关于this指向的一道题
var length = 10
function fn(){
console.log(this.length)
}
var obj = {
length: 5,
f : function(fn){
fn()
arguments[0]()
}
}
obj.f(fn, 2)
输出结果是: 10 和 2
题三:关于Promise.then执行顺序的一道题
Promise.resolve().then(()=>{
console.log(0)
return Promise.resolve(4)
}).then((res)=>{
console.log(res)
})
Promise.resolve().then(()=>{
console.log(1)
}).then(()=>{
console.log(2)
}).then(()=>{
console.log(3)
}).then(()=>{
console.log(5)
}).then(()=>{
console.log(6)
}).then(()=>{
console.log(7)
})
以上输出结果是:0 1 2 3 4 5 6 7
分析:
题四: 关于对象属性是一个对象的题目
let a = { a: 10 }
let b = { b: 10 }
let obj = {
a : 10
}
obj[b] = 20
console.log(obj[a])
输出结果是: 20