javascript那些有意思的题目

275 阅读1分钟

题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