0329面试题——变量提升、事件循环、this

101 阅读1分钟

变量提升

console.log(a);
var a = 1;
function a () { 
    // 1 
}
a = 2;
function a () {
    // 2 
}
a();

// function a () { // 2}
// VM3022:10 Uncaught TypeError: a is not a function

事件循环

var log = console.log

new Promise((resolve) => {
  log(3)
  resolve();
}).then(() => log(4))

async function foo () {
    console.log('5');
    await bar();
    console.log('7');
}

async function bar () {
    console.log('6');
}

foo();

// 3 5 6 4 7

this

var log = console.log

var name ="window";

var bar ={name: "bar" };

var foo = {

    name: "foo",

    say:() => {log(this.name)},

    say2: function () {

        return () => {log(this.name)}

    }

}


foo.say()

foo.say.call(bar);


foo.say2()();

foo.say2.call(bar)();

foo.say2().call(bar);

// window window foo bar foo