回调=回调||功能() {};
callback = callback || function() {};
上面这行代码的目的是什么。我对 'function() {}' 的 OR-ing 特别感到困惑。为什么空函数?为了给代码行更多的上下文,这里是更完整的函数定义。
this.detectQRCode = function(imageData, callback) {
callback = callback || function() {};
client.decode(imageData, function(result) {
if(result !== undefined) {
self.currentUrl = result;
}
callback(result);
});
};
它只是一种 "short circuit" 编码风格。它正在检查以确保回调不是未定义的。如果它是未定义的,那么它会为其分配一个匿名函数,以便 callback() 代码不会失败。
相当于
if(typeof(callback) == "undefined") callback = function(){};
这种方法的一个缺陷是,如果定义了回调,但它不是一个函数,那么在无法调用的对象上使用 callback()
将导致错误。最好用
if(toString.call(callback) != "[object Function]") callback = function(){};
上面这行代码的目的是什么。我对 'function() {}' 的 OR-ing 特别感到困惑。为什么空函数?为了给代码行更多的上下文,这里是更完整的函数定义。
this.detectQRCode = function(imageData, callback) {
callback = callback || function() {};
client.decode(imageData, function(result) {
if(result !== undefined) {
self.currentUrl = result;
}
callback(result);
});
};
它只是一种 "short circuit" 编码风格。它正在检查以确保回调不是未定义的。如果它是未定义的,那么它会为其分配一个匿名函数,以便 callback() 代码不会失败。
相当于
if(typeof(callback) == "undefined") callback = function(){};
这种方法的一个缺陷是,如果定义了回调,但它不是一个函数,那么在无法调用的对象上使用 callback()
将导致错误。最好用
if(toString.call(callback) != "[object Function]") callback = function(){};