上述代码行的目的是什么。我专门用"函数(){}'来混淆。为什么是空功能?为了给代码行的更多上下文,这是更完整的功能定义。
this.detectQRCode = function(imageData, callback) {
callback = callback || function() {};
client.decode(imageData, function(result) {
if(result !== undefined) {
self.currentUrl = result;
}
callback(result);
});
};
它只是"短路"编码样式。它正在检查,以确保回调不确定。如果它不确定,则它将其分配为匿名函数,以使callback()代码不失败。
它等效于
if(typeof(callback) == "undefined") callback = function(){};
这种方法的陷阱是,如果定义了回调,但不是一个函数,那么在无法称为的东西上使用 callback()
会导致错误。最好使用
if(toString.call(callback) != "[object Function]") callback = function(){};