javascript - `typeof window === ' object'` 会永远是真的吗?

标签 javascript browser browserify

假设窗口没有阴影,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/

相关文章:

javascript - angularjs,browserify + 下划线

browserify - 如何防止 browserify 包含多个版本的子依赖项?

javascript - d3 是构建自由格式图表编辑器的不错选择吗?

Css 链接在 Firefox 中不起作用

javascript - 浏览器调试 : how to see what Javascript functions was called after some action?

javascript - 如何制作基于个人浏览器的动态 GUI

javascript - Browserify 更改依赖项的加载顺序

javascript - 如何避免代码中出现嵌套的三元表达式?

javascript - 如何使用 jQuery 按类型和父 div 选择文本区域?

javascript - Passport-local 和 Passport-local-mongoose 的身份验证错误