gpt4 book ai didi

javascript - 为什么 JavaScript 中有 isNaN() 函数而没有 isUndefine()?

转载 作者:行者123 更新时间:2023-12-03 02:01:59 26 4
gpt4 key购买 nike

为什么 JavaScript 中有 isNaN() 函数,而 isUn​​define() 必须写成:

typeof(...) != "undefined"

有什么地方我没看出来吗?

在我看来,写这个而不只是isUn​​define(testValue)真的很难看。

最佳答案

根本不需要 isUn​​define() 函数。 ECMAScript specification 中解释了这背后的原因。 :

(Note that the NaN value is produced by the program expression NaN.) In some implementations, external code might be able to detect a difference between various Not-a-Number values, but such behaviour is implementation-dependent; to ECMAScript code, all NaN values are indistinguishable from each other.

isNaN() 函数充当检测某些内容是否为 NaN 的方法,因为相等运算符对其不起作用(如您所期望的,见下文) 。一个 NaN 值不等于另一个 NaN 值:

NaN === NaN; // false
另一方面, undefined 是不同的,并且 undefined 值是可以区分的:

undefined === undefined; // true
<小时/>

如果您对 isNaN() 函数的工作原理感到好奇,请参阅 ECMAScript 规范 also explains this for us也是:

  1. Let num be ToNumber(number).
  2. ReturnIfAbrupt(num).
  3. If num is NaN, return true.
  4. Otherwise, return false.

A reliable way for ECMAScript code to test if a value X is a NaN is an expression of the form X !== X. The result will be true if and only if X is a NaN.

NaN !== NaN; // true
100 !== 100; // false

var foo = NaN;
foo !== foo; // true

关于javascript - 为什么 JavaScript 中有 isNaN() 函数而没有 isUndefine()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26426298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com