Javascript 检查变量是否未定义

Javascript checking whether a variable is undefined

要检查是否加载了 adsense 脚本,我使用这个:

var isAdsenseNotLoaded = (typeof adsbygoogle.loaded === 'undefined');

但是很多用户在堆栈跟踪中有这个错误:

ReferenceError: adsbygoogle is not defined
    at http://example.com/file.js:1:42020

所以我还应该检查 adsbygoogleadsbygoogle.loaded 吗?

您需要先检查是否定义了adsbygoogle

var isAdsenseNotLoaded = !adsbygoogle || typeof adsbygoogle.loaded === 'undefined';

是的,首先检查 typeof adsbygoogle,如果加载了全局变量 adsbygoogle,这将 return。

var isAdsenseNotLoaded = (typeof adsbygoogle === 'undefined' || typeof adsbygoogle.loaded === 'undefined');

使用 typeof 检查全局变量永远不会因为试图访问未定义的变量而产生任何异常。参考:JavaScript check if variable exists (is defined/initialized)

所以整个对象没有定义

var isAdsenseNotLoaded = (typeof adsbygoogle === 'undefined' || typeof adsbygoogle.loaded === 'undefined');

只需在第一步检查对象是否存在,然后检查是否已加载。