Heim  >  Fragen und Antworten  >  Hauptteil

Javascript - diese Frage

Warum wird „undefiniert“ gedruckt? Wie kann ich dafür sorgen, dass dieser Code jeweils global, obj und inner gedruckt wird?

var scope = 'global';

function log() {
    console.log(this.scope)
}

var obj = {
    scope: 'obj',
    do: function () {
        var scope = 'inner';
        log()
    }
};

obj.do();
仅有的幸福仅有的幸福2711 Tage vor420

Antworte allen(5)Ich werde antworten

  • 高洛峰

    高洛峰2017-05-19 10:25:39

    最后对象志向window,window.scope,返回的才是undefined

    Antwort
    0
  • 高洛峰

    高洛峰2017-05-19 10:25:39

    var scope = 'global';
    
    function log() {
        console.log(this.scope)
    }
    
    var obj = {
        scope: 'obj',
        do: function () {
            var scope = 'inner';
            log();
            console.log(scope);
        }
    };
    obj.do();
    console.log(obj.scope);

    Antwort
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-19 10:25:39

    this指向问题
    JS函数不同执行环境下的this指向

    Antwort
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-19 10:25:39

    首先,这段代码打印出来的应该是global不是undefined,然后你这种写法inner是不可能通过this.scope来调用的,剩下的就去看看this指向吧

    Antwort
    0
  • PHP中文网

    PHP中文网2017-05-19 10:25:39

    var scope = 'global';

    function log() {

    console.log(this.scope)

    }

    var obj = {

    scope: 'obj',
    do: function () {
        var scope = 'inner';
        log();   //gobal
        console.log(this.scope);  //this指向obj,obj作用域中找到scope:obj
        console.log(scope);    //局部的inner
    }

    };

    obj.do();

    Antwort
    0
  • StornierenAntwort