什么是"this._events ||(this._events = {});" 意思?

Che*_*rry 3 javascript backbone.js

我已经开始学习Backbone.js了.目前我的JavaScript技能不太好.我已经开始检查该backbone.js文件,并遇到了一个奇怪的代码行,其目的我无法弄清楚.代码示例(如果您需要更多上下文,请为开发人员手动下载backbone.js并查看第80行):

var Events = Backbone.Events = {

  // Bind an event to a `callback` function. Passing `"all"` will bind
  // the callback to all events fired.
  on: function(name, callback, context) {
    if (!eventsApi(this, 'on', name, [callback, context]) || !callback) return this;
    this._events || (this._events = {});
    var events = this._events[name] || (this._events[name] = []);
    events.push({callback: callback, context: context, ctx: context || this});
    return this;
  },
Run Code Online (Sandbox Code Playgroud)

这条线this._events || (this._events = {});是什么意思?对我来说,_events看起来像一个内部变量,但(this._events = {})用于作业或是一个比较?或者||在这种情况下完全不同的操作?

Chr*_*fer 5

这是一个使用javascripts"falsy"评估的技巧.它与:

if (this._events) {
    // do nothing, this._events is already defined
} else {
    this._events = {};
}
Run Code Online (Sandbox Code Playgroud)

var events = this._events[name] || (this._events[name] = []);可转换为的行也是如此

var events;
if (this._events[name]) {
    events = this._events[name];
} else {
    this._events[name] = [];
    events = this._events[name];
}
Run Code Online (Sandbox Code Playgroud)