是否使用==代替===可以表示null / undefined?

时间:2019-11-21 14:24:38

标签: javascript

我目前有一个变量,既可以是null,也可以是undefined。在这两种情况下,我都想离开该功能:

if (myvar==null) return;

这很好用,但是我从我的IDE(VS)检索警告,因为==并不关心类型,而===却关心。我知道==通常被认为是不好的风格,因此。

这是规则的例外吗?我应该只是忽略此警告并坚持更好的可读性,还是下面的建议操作?

if (myvar===null || myvar===undefined) return;

2 个答案:

答案 0 :(得分:1)

问题在于缺乏澄清。 如果您是为自己编写代码,那么您就可以知道自己在做什么,这很好。但是,如果贡献者找到此代码,他们可以:

  1. 不知道import numpy as np import matplotlib.pyplot as plt #from scipy.fftpack import fft def omega(p, q): return np.exp((-2j * np.pi * p) / q) def fft(x): N = len(x) if N <= 1: return x even = fft(x[0::2]) odd = fft(x[1::2]) combined = [0] * N for k in range(N//2): combined[k] = even[k] + omega(k,N) * odd[k] combined[k + N//2] = even[k] - omega(k,N) * odd[k] return combined N = 600 T = 1.0 / 800.0 x = np.linspace(0, N*T, N) #y = np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x) y = np.sin(50.0 * 2.0*np.pi*x) xf = np.linspace(0.0, 1.0/(2.0*T), N//2) yf = fft(y) yfa = 2.0/N * np.abs(yf[0:N//2]) plt.plot(xf, yfa) plt.show() / ==情况下null的工作原理
  2. 了解其工作原理,但不知道是否有意使用(如果您实际上想同时检查undefinednull,或者只想检查{{ 1}},但使用了undefined

代码应该清晰明了,因此通常您会发现程序员在检查前添加注释以指定是的,他们知道自己在做什么,是的,这是故意的。

最终,您对此感到厌倦并开始使用null

它更冗长,但更清楚,不会给误解留下空间。

我注意到的另一件事是为此类事物创建自定义功能,例如==,但尽管冗长,我还是希望同时检查两个值。

答案 1 :(得分:0)

==有非常具体的规则,通常建议不要这样做,因为这些规则不直观。如果您已经记住了与它的行为相关的规则,那么我只会宽容使用它,其他所有可能不得不处理您的代码的开发人员(大多数都没有)也不会同意。

在这种情况下,如果a == nulltrueanull中的一个,则undefined返回document.all 4个错误的JS值(MDN,包括为什么document.all是错误的)。因此,除非您希望它与document.all匹配,否则我将使用===

此外,在所有位置都使用===可以增强代码的一致性。