我收到突出显示callback(result);
的以下错误:
未捕获的TypeError:r不是Image.onload(webp-support.js:6)的函数
导出文件(webp-support.js):
export default (callback) => {
let img = new Image();
img.onload = _ => {
let result = (img.width > 0) && (img.height > 0);
callback(result);
}
img.onerror = _ => {
callback(false);
}
img.src = "data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA";
}
导入文件:
import webpSupport from './webp-support';
webpSupport(console.log('hello'));
答案 0 :(得分:1)
问题出在这一行:
webpSupport(console.log('hello'));
如果我们将其分解,您将看到问题:
let supportedCallback = console.log('hello');
webpSupport(supportedCallback);
那显然是行不通的。它执行console.log
,然后将其结果(始终为undefined
)分配为webpSupport
函数中的回调。显然,您不想要那样。您需要传递一个本身调用console.log
的函数:
webpSupport(() => console.log('webp supported'));
与hello
相比,我也更愿意记录更有用的消息!如果您不熟悉它,则() => ...
语法是Javascript的较短函数语法,称为arrow function。