即使使用null检查也未定义

时间:2019-02-20 05:09:32

标签: javascript scope

侦听器返回未定义的值,并且我相信start属性。这是一个观察者对象。

    var updateP = {
        cb: function (event, properties) {
            "listener" in window? listener.next(properties):null
        },
        start: function (listener) {
            dataset.on("update", this.cb)
        },
        stop: function () {
            dataset.off("update", this.cb)
        },
    }

1 个答案:

答案 0 :(得分:0)

listener变量是start函数的局部变量,因此您不能将其作为全局变量来访问。

this.cb内移动updateP.start的定义,然后可以使词汇变量变小。

var updateP = {
  start: function(listener) {
    function asdf(ab) {
      console.log(ab)
    }
    this.cb = function(event, properties) {
      listener.next(properties)
    };
    dataset.on("update", this.cb)
  },
  stop: function() {
    if (this.cb) {
      dataset.off("update", this.cb);
    }
  },
}