我经常阅读源代码作为学习编程的好资源。我正在研究Backbone.Model的fetch()
方法并且有了这个问题,我希望有人可以解释一下。
这是fetch()方法:
// ---------------------------------------------------------------------
// Fetch the model from the server. If the server's representation of the
// model differs from its current attributes, they will be overriden,
// triggering a `"change"` event.
fetch: function(options) {
options = options ? _.clone(options) : {};
if (options.parse === void 0) options.parse = true;
var success = options.success;
options.success = function(model, resp, options) {
if (!model.set(model.parse(resp, options), options)) return false;
if (success) success(model, resp, options);
};
return this.sync('read', this, options);
}
我的问题是,if条件 if (options.parse === void 0)...
的重点是什么? void 0
只是评估为“未定义”,所以这是测试属性是否未定义的简写?如果是这样,它是否比标准的 (typeof options.parse === 'undefined')
语句有任何优势,我发现它更具语义和可读性?
答案 0 :(得分:0)
除了代码大小和性能之外,使用void 0
还有另一个原因。某些浏览器允许为undefined
分配其他值。这可能会导致代码以依赖于浏览器的方式被破坏。