4.作用域

2018-09-12  本文已影响0人  Flying_thoughts

```

// ES5 中作用域

const callbacks = []

for (var i = 0; i <= 2; i++) {

    callbacks[i] = function() {

        return i * 2

    }

}

console.table([

    callbacks[0](),

    callbacks[1](),

    callbacks[2](),

])

const callbacks2 = []

for (let j = 0; j <= 2; j++) {

    callbacks2[j] = function() {

        return j * 2

    }

}

console.table([

    callbacks2[0](),

    callbacks2[1](),

    callbacks2[2](),

])

;((function() {

    const foo = function() {

        return 1

    }

    console.log("foo()===1", foo() === 1)

    ;((function() {

        const foo = function() {

            return 2

        }

        console.log("foo()===2", foo() === 2)

    })())

})())

{

    function foo() {

        return 1

    }

    console.log("foo()===1", foo() === 1)

    {

        function foo() {

            return 2

        }

        console.log("foo()===2", foo() === 2)

    }

    console.log("foo()===1", foo() === 1)

}

```

在es3 、es5中需要使用立即执行函数 (function(){})() 来对作用域进行隔离 , 而es6中只需要用 {} 花括号就可以隔离 

上一篇下一篇

猜你喜欢

热点阅读