MDN中的严格模式定义如下所示
在正常代码中默默失败的任何赋值(赋值给 不可写属性,赋予getter-only属性, 赋予不可扩展对象的新属性)将投入 严格模式
因此,在正常代码中静默失败的文档的赋值会在严格模式下抛出异常(如预期的那样)。
> var document = 1
// normal mode
> document
#document
// strict mode
x Uncaught TypeError: Cannot assign to read only property 'document' of object [object Object]
但是在window
的情况下,严格模式下没有错误。它只是默默地失败。
> var window = 1
> window
Window {external: Object, chrome: Object, document: document…}
另一种情况是console
可以重新分配而没有任何错误并保留分配。
> var console = 1
> console
1
但是localStorage
既没有保留任务也没有抛出异常。
> var localStorage = 1
> localStorage
Storage {}
为什么选择窗户& localStorage即使在严格模式下也会默默地失败?其他人的行为是这样的?
(Chrome 48.0.2564.116)