javascript - 分配给与 MS Edge 中窗口对象的属性共享名称的变量时的行为差异
问题描述
尝试在 Microsoft Edge 中为窗口对象的属性分配值失败,这与 firefox 和 chrome 中的行为不同。
- 展望未来,在命名变量时是否需要牢记窗口对象的每个属性?有什么工具可以帮助解决这个问题吗?
- 如果未来的边缘版本向窗口对象添加一个新属性,那会破坏现有代码吗?
- 虽然我已经确认了 window 对象的这种行为,但是否还有其他具有这种行为的全局名称?
虽然在这对我来说是个问题的情况下,我只是能够更改变量的名称以将代码返回到工作状态,但这似乎不是一个长期的解决方案。
// First example
const foo = { control: 123, focus: 456, alert: 789 };
const { control, focus, alert } = foo;
console.log(control, focus, alert);
console.log(focus === window.focus);
console.log(alert === window.alert);
// Second example
const unescape = 'test';
console.log(unescape);
关于第一个例子:
第一个 console.log在 Firefox 和 chrome 中打印123
, 。Edge 正确打印控件,但返回其他两个参数的函数。456
789
后两个日志分别false
在 Firefox 和 chrome 中打印,而true
在 Edge 中打印。
关于第二个例子:
请注意,我将这个更简单的示例列在第二位,因为我只在浏览器的控制台中对其进行了测试,而我在主动运行的代码中注意到了第一个示例。
在 Firefox 和 chrome 中,该值'test'
存储在unescape
. 它在以下行中成功打印。
在边缘试图分配到unescape
产生一个Unspecified Error
.
解决方案
推荐阅读
- hyperledger-composer - 尝试调用业务网络时出错。要求未定义
- json - NodeJS websocket访问第二层JSON数据
- node.js - 在 React 应用程序中显示来自 Gridfs 存储的视频
- angular - Angular 7 如何使用新的@aiStore
- ios - 如何一次只允许触摸一个 UIImageView
- reactjs - 如何将默认反应(CRA)更新为 webpack4 和 babel7?
- javascript - 单选框不调用 Javascript 函数
- c++ - 如何在 C++ 中将 boost 用于贝塞尔函数
- python - 通过导入在两个类之间共享数据结构
- java - Android中的outputStream写入方法