Dmi*_*sky 6 javascript typeerror
AS:问题是关于错误的类型,而不是关于这种现象
"use strict"
如果系统变量喜欢NaN
并且undefined
已经改变,则抛出TypeError .
但为什么它是类型错误?为什么不语法错误?
编辑:实际上,这里不是SyntaxError,因为代码段的语法没有错误.
但错误的根源在于,某些受保护对象无法手动更改 ; 所以,它是访问错误(没有这样的,我知道).
那么,为什么访问错误看起来像type-one?
在 ES5 中,有 6 种不同类型的原生错误:
当前本规范中未使用此异常。保留该对象是为了与本规范的先前版本兼容。
表示数值超出了允许范围。
指示检测到无效的参考值。
表明发生了解析错误。
指示操作数的实际类型与预期类型不同。
指示全局 URI 处理函数之一的使用方式与其定义不兼容。
在您的情况下,会抛出错误,因为您尝试将值分配给window.NaN
or window.undefined
,它们是不可写的属性。
在分配新值之前,内部[[Put]]方法检查[[CanPut]],这将返回 false,因为该属性是不可枚举的。因此 [[Put]] 将会抛出。
所以问题是分配的引用(赋值表达式中的左操作数)的可写性不是预期的。那么,在上面的 6 种错误类型中,最合适的就是 TypeError,即使可写性不完全是一种类型。
归档时间: |
|
查看次数: |
537 次 |
最近记录: |