我工作的开源JavaScript项目包括代码:
if (color) { tapeDiv.style.backgroundColor = color; // set color here if defined by event. Else use css }
贡献者想要将其更改为
if (color != null) { // this line changed tapeDiv.style.backgroundColor = color; // set color here if defined by event. Else use css }
color是一个字符串var.只应使用超过0个字符的字符串来显式设置颜色.
由于JS转换为""而null为boolean false,为什么需要比较!= null?
我错过了一些东西,认为第一种形式与第二种形式一样好(并且略短)?
我在JS源代码中经常看到与null的比较.当所有JS简单对象在作为布尔值转换时已知结果时,为什么需要它们?
谢谢,
拉里
PS.我想如果0(整数)是一个有效的情况,那么如果(0)将是假[问题]并且如果(0!= null)将为真[允许0情况].还有其他原因吗?
PPS.应该提到tapeDiv是新创建的.所以没有必要将样式重置为"",因为div是全新的.
使用所有可能的假值来评估作业,您将得到答案:
tapeDiv.style.backgroundColor = false; // does nothing tapeDiv.style.backgroundColor = 0; // sets as "black", // but ignored by FF tapeDiv.style.backgroundColor = null; // resets the background-color // to use whatever is defined // in a stylesheet (if any), // but ignored by IE. tapeDiv.style.backgroundColor = ''; // resets the background-color // to use whatever is defined // in a stylesheet (if any).
检查" if (color)
"不会让任何人通过.
检查" if (color != null)
"将使1),2)和4)通过.1)没有做任何事情,2)在Firefox中无法按预期工作,4)将始终按预期工作.但是,"作品"取决于您的上下文(您未提供).
希望有所帮助.
不,你的ps是正确的.Null将评估为false,如果null需要与空字符串或0区分开,那么您将进行空检查.
或者它可能只是为了清晰.表明你特意寻找null是更具描述性的.