根据代码看输出(系列)

var name = 1;
(function () {
    console.log(name + this.name); // browser: -> 'undefined1'; Node.js: -> NaN
    var name = '2';
    console.log(name + this.name); // browser: -> '21'; Node.js: -> '2undefined'
})();
var name = 'name';
var A = {
    name: 'A',
    sayHello: function () {
        let s = () => console.log(this.name);  // A
                                               // A

        // let s = function() {
        //     console.log(this.name);   
        //     // 结果
        //     // name
        //     // B
        // }
        return s;
    }
};
let sayHello = A.sayHello();
sayHello();  
var B = {
    name: 'B'
};
sayHello.call(B);
console.log(typeof typeof typeof null)  // string
// 手写一个repeact()函数,加上下面的代码运行,
// 使每3秒打印一个helloword,总共执行4次
function repeact(fn, count, delay) {
    return function () {
        let arg = Array.prototype.pop.call(arguments);
        // 方法一:
        // (function foo() {
        //     let timer = setTimeout(() => {
        //         if(count) {
        //             fn(arg);
        //             count--;
        //             clearTimeout(timer);
        //             foo();
        //         }
        //     }, delay || 1000)
        // })();

        // 方法二:
        // let timer = setInterval(() => {
        //     if(count) {
        //         fn(arg);
        //         count--;
        //     }
        //     if(count == 0) {
        //         clearInterval(timer);
        //     }
        // }, delay || 1000);

        // 方法三
        // for(let i = 0; i < count; i++) {
        //     let timer = setTimeout(() => {
        //         fn(arg);
        //         clearTimeout(timer);
        //     }, delay * (i + 1));
        // }
    }
}
const repeatFunc = repeact(console.log, 4, 3000);
repeatFunc('helloword');
var a = 10;
(function(){
    console.log(a);   // undefined(因为下面的 var a = 20 的 a 会被变量提升)
    a = 5;   // 因为局部作用域中存在 var a 的声明,所以这里的赋值是赋给局部变量的
    console.log(window.a);  // 10
    var a = 20;  // 执行到这时,其实是在给局部变量 a 赋值 => a = 20
    console.log(a);  // 20
})()
setTimeout(function () {
    console.log(1);
}, 0)
new Promise(function execulor(resolve) {
    console.log(2)
    for (var i = 0; i < 10000; i += 1) {
        // console.log(i);
        i == 9999 && resolve()
    }
    console.log(3)
}).then(function () {
    console.log(4)
})
console.log(5)

// 2 3 5 4 1
// 请问输出是什么?(有点意思)
function getPersonInfo(one, two, three) {
    console.log(one)
    console.log(two)
    console.log(three)
}
const person = 'Lydia'
const age = 21
getPersonInfo `${person} is ${age} years old`

// 答案: https://es6.ruanyifeng.com/#docs/string#%E6%A0%87%E7%AD%BE%E6%A8%A1%E6%9D%BF
Last Updated:
Contributors: mrkleo