骨干源代码中的Javascript语法

Javascript syntax in backbone source code

本文关键字:Javascript 语法 源代码      更新时间:2023-09-26

这段代码是做什么的?

g = "undefined" !== typeof exports ? exports : k.Backbone = {};

简写为:

if("undefined" !== typeof exports)
    g = exports;
}else{
    g = k.Backbone = {};
}

:?称为三元算符

如果我这样写可能会更容易读:

g = ("undefined" !== typeof exports) // If
    ? exports                        // Then
    : k.Backbone = {};               // Else

它将Backbone定义为CommonJS模块,因此它可以加载到CommonJS兼容的环境中,如node.js。

您正在查看缩小的源代码。这是未修改后的样子:

var Backbone;
if (typeof exports !== 'undefined') {
  Backbone = exports;
} else {
  Backbone = root.Backbone = {};
}

变量exports是CommonJS模块定义的返回对象。在CommonJS环境中,Backbone变量被设置为该值,因此Backbone从模块导出。

如果exports未定义,则假定代码位于浏览器环境中,并且Backbone应导出root对象的属性,该对象指向浏览器的全局作用域window