我目前有一个变量,既可以是null
,也可以是undefined
。在这两种情况下,我都想离开该功能:
if (myvar==null) return;
这很好用,但是我从我的IDE(VS)检索警告,因为==
并不关心类型,而===
却关心。我知道==
通常被认为是不好的风格,因此。
这是规则的例外吗?我应该只是忽略此警告并坚持更好的可读性,还是下面的建议操作?
if (myvar===null || myvar===undefined) return;
答案 0 :(得分: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
的工作原理undefined
或null
,或者只想检查{{ 1}},但使用了undefined
)代码应该清晰明了,因此通常您会发现程序员在检查前添加注释以指定是的,他们知道自己在做什么,是的,这是故意的。
最终,您对此感到厌倦并开始使用null
。
它更冗长,但更清楚,不会给误解留下空间。
我注意到的另一件事是为此类事物创建自定义功能,例如==
,但尽管冗长,我还是希望同时检查两个值。
答案 1 :(得分:0)
==
有非常具体的规则,通常建议不要这样做,因为这些规则不直观。如果您已经记住了与它的行为相关的规则,那么我只会宽容使用它,其他所有可能不得不处理您的代码的开发人员(大多数都没有)也不会同意。
在这种情况下,如果a == null
是true
,a
或null
中的一个,则undefined
返回document.all
4个错误的JS值(MDN,包括为什么document.all是错误的)。因此,除非您希望它与document.all
匹配,否则我将使用===
。
此外,在所有位置都使用===
可以增强代码的一致性。