假设窗口没有阴影,typeof window === 'object'
永远是真的?这安全吗?
上下文:我正在尝试使用 browserify 将模块导出到全局范围,并且我想检查该模块是否在浏览器中运行,如果是,我想将其导出到全局对象。
最佳答案
如果你有真正的window
,由运行时定义,它将始终是一个对象。 typeof
operator (§12.5.6)数量有限return values (table 15) , window
没有特殊的.如果他们扩展该表,它可能会改变,但在 ES1 到 ES7 中唯一适用的结果是 'object'
.
请记住,Node 没有定义 window
完全没有(所以 typeof
将是 'undefined'
),正如你提到的,你可以隐藏它。在具有标准 DOM 实现的浏览器中,window
将是 §7.3 中定义的对象的DOM specification .对于 JavaScript,这应该是一个对象,我相信所有浏览器都会这样公开它。
在 webpack 中,你会使用 output.library
属性和设置output.libraryTarget
至'var'
,然后捆绑包为您设置全局。我想 browserify 有一个等价物。
关于javascript - `typeof window === ' object'` 会永远是真的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38746211/