当前位置:  开发笔记 > 编程语言 > 正文

Javascript:为什么要与null比较?

如何解决《Javascript:为什么要与null比较?》经验,为你挑选了2个好方法。

我工作的开源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是全新的.



1> JPot..:

使用所有可能的假值来评估作业,您将得到答案:

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)将始终按预期工作.但是,"作品"取决于您的上下文(您未提供).

希望有所帮助.



2> Dan..:

不,你的ps是正确的.Null将评​​估为false,如果null需要与空字符串或0区分开,那么您将进行空检查.

或者它可能只是为了清晰.表明你特意寻找null是更具描述性的.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有