寻找更好的习语..
var x = module; // Reference Error
var x = typeof module==='undefined' ? window : module;
是否有更短的方法来检查模块是否存在?
答案 0 :(得分:4)
var x = module; // Reference Error
从技术上讲,你不会检查 未定义 - 即:如果module===undefined
(许多其他答案都假设) - 你想知道是否该模块 声明 。
在这种情况下,你的第二个例子就是这样做的方法:
var x = typeof module==='undefined' ? window : module;
// replace window with whatever you want your fallback value to be
答案 1 :(得分:-1)
我喜欢使用双重爆炸(!!)。
第一个爆炸将变量强制转换为布尔值,第二个变换撤消第一次爆炸所执行的逻辑。
var x = !!module ? module : window;
这也是同时验证null和undefined的更短方法。这可能就是你想要的。
示例:
var foo = 1;
console.log(!!foo); //true
var bar = { name: "test" };
console.log(!!bar); //true
var module = null;
console.log(!!module); //false
var module = undefined;
console.log(!!module); //false