为什么匿名函数不能访问其范围之外的变量?

时间:2019-11-26 00:56:27

标签: javascript html5-canvas anonymous-function

我有以下代码:

var Game = {
    canvas : document.createElement("canvas"),

    init_canvas : (function(){
        this.canvas.width = document.body.clientWidth - 15;
        this.canvas.height = 800;
    ... // rest of the code
    }) (),

在这里,我试图在匿名canvas函数中操纵init_canvas;但是,每当我尝试这样做时,都会说canvasundefined

Uncaught TypeError: Cannot set property 'width' of undefined
    at game.js:51
    at game.js:60

此外,如果我将函数init_canvas的代码更改为以下内容:

init_canvas : function(){
    this.canvas.width = document.body.clientWidth - 15;
    this.canvas.height = 800;
}),

(现在它是一个文字函数,而不是匿名函数)

,然后再调用: Game.init_canvas(),效果很好。为什么会这样?

0 个答案:

没有答案