为什么分配给NaN或undefined会导致TypeError?

迪玛·帕日斯基(Dima Parzhitsky)

AS:问题是关于错误的类型,而不是现象

"use strict"如果喜欢NaNundefined更改了系统变量则抛出TypeError
但是为什么它是类型错误?为什么不出现语法错误?


编辑:确实,这里不是SyntaxError,因为代码片段的语法没有错误。
但是,错误的根源在于某些受保护的对象无法手动更改因此,很可能是访问错误(我知道没有这样的错误)。
那么,为什么访问错误看起来像类型一?

i

在ES5中,存在6种不同的本机错误

  • EvalError

    此规范当前未使用此异常。保留该对象是为了与本规范的先前版本兼容。

  • RangeError

    表示数值已超出允许范围。

  • ReferenceError

    指示已检测到无效参考值。

  • 语法错误

    指示发生了解析错误。

  • TypeError

    指示操作数的实际类型与预期的类型不同。

  • URIError

    指示使用一种全局URI处理功能与其定义不兼容。

在您的情况下,将引发该错误,因为您尝试为window.NaN分配值window.undefined,这是不可写的属性。

在分配新值之前,内部[[Put]]方法会检查[[CanPut]],由于该属性不可枚举,该方法将返回false。因此,[[Put]]将抛出。

因此,问题在于分配的引用(分配表达式中的左操作数的可写性不是预期的。然后,在上述6种错误类型中,即使可写性不是type,最合适的类型似乎是TypeError

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么将对象分配给接口?

来自分类Dev

为什么不能将python的print分配给变量?

来自分类Dev

为什么在模块模式中将功能分配给变量?

来自分类Dev

为什么SynchronizedCollection将此分配给互斥锁?

来自分类Dev

为什么(void **)类型可以分配给(void *)或(int *)?

来自分类Dev

Obj-C:为什么我的NSTextField子类会影响我尚未分配给它的对象?

来自分类Dev

为什么不能将lambda分配给Object?

来自分类Dev

为什么强制垃圾回收会增加分配给Java进程的内存?

来自分类Dev

量角器-分配给element.all.locator.count的变量返回NaN为什么?

来自分类Dev

为什么可以将nullptr分配给std :: string?

来自分类Dev

为什么将短变量分配给Integer引用会产生编译时错误?

来自分类Dev

为什么分配给NaN或undefined会导致TypeError?

来自分类Dev

当我将js函数分配给局部变量时,为什么它们会失败?

来自分类Dev

为什么可以将null分配给Nullable变量?

来自分类Dev

为什么将整数分配给字符串会导致空格?

来自分类Dev

将值分配给列表的第一个索引后,为什么值会更改?

来自分类Dev

为什么列表上的推/取消移位功能会影响该列表在Javascript中分配给的其他列表?

来自分类Dev

为什么在C#中将字节值分配给动态变量会导致动态更改为字节数据类型?

来自分类Dev

当未分配给列而是变量时,为什么to_datetime导致错误?

来自分类Dev

为什么将文件指针分配给结构指针成员会导致分段错误?

来自分类Dev

为什么我的Mongoose用户导入无效?Uncaught TypeError:分配给常数变量

来自分类Dev

为什么将功能分配给std :: function会导致未定义的引用?

来自分类Dev

为什么分配给寄存器不会导致其他所有问题?

来自分类Dev

为什么将对象分配给地图会产生一个空对象?

来自分类Dev

为什么将字符分配给C ++字符串会导致字符串长度为0?

来自分类Dev

为什么将新数组分配给变量会更改其引用值而不是值?

来自分类Dev

为什么将数据分配给变量时计算会更改数据?

来自分类Dev

为什么将智能指针重新分配给自身会导致破坏?

来自分类Dev

为什么将列表分配给另一个列表会产生“无”?

Related 相关文章

  1. 1

    为什么将对象分配给接口?

  2. 2

    为什么不能将python的print分配给变量?

  3. 3

    为什么在模块模式中将功能分配给变量?

  4. 4

    为什么SynchronizedCollection将此分配给互斥锁?

  5. 5

    为什么(void **)类型可以分配给(void *)或(int *)?

  6. 6

    Obj-C:为什么我的NSTextField子类会影响我尚未分配给它的对象?

  7. 7

    为什么不能将lambda分配给Object?

  8. 8

    为什么强制垃圾回收会增加分配给Java进程的内存?

  9. 9

    量角器-分配给element.all.locator.count的变量返回NaN为什么?

  10. 10

    为什么可以将nullptr分配给std :: string?

  11. 11

    为什么将短变量分配给Integer引用会产生编译时错误?

  12. 12

    为什么分配给NaN或undefined会导致TypeError?

  13. 13

    当我将js函数分配给局部变量时,为什么它们会失败?

  14. 14

    为什么可以将null分配给Nullable变量?

  15. 15

    为什么将整数分配给字符串会导致空格?

  16. 16

    将值分配给列表的第一个索引后,为什么值会更改?

  17. 17

    为什么列表上的推/取消移位功能会影响该列表在Javascript中分配给的其他列表?

  18. 18

    为什么在C#中将字节值分配给动态变量会导致动态更改为字节数据类型?

  19. 19

    当未分配给列而是变量时,为什么to_datetime导致错误?

  20. 20

    为什么将文件指针分配给结构指针成员会导致分段错误?

  21. 21

    为什么我的Mongoose用户导入无效?Uncaught TypeError:分配给常数变量

  22. 22

    为什么将功能分配给std :: function会导致未定义的引用?

  23. 23

    为什么分配给寄存器不会导致其他所有问题?

  24. 24

    为什么将对象分配给地图会产生一个空对象?

  25. 25

    为什么将字符分配给C ++字符串会导致字符串长度为0?

  26. 26

    为什么将新数组分配给变量会更改其引用值而不是值?

  27. 27

    为什么将数据分配给变量时计算会更改数据?

  28. 28

    为什么将智能指针重新分配给自身会导致破坏?

  29. 29

    为什么将列表分配给另一个列表会产生“无”?

热门标签

归档