为了账号安全,请及时绑定邮箱和手机立即绑定

null与""的问题

null与""的问题

慕神8447489 2018-10-11 17:15:24
        var loginEmail = $.trim($("input[name='email']").val());                 if (loginEmail == null || loginEmail == '邮箱' || loginEmail == "") {             $(".smtwarning").empty().text("您的邮箱账号忘记输入了");                          }                                 这个代码中loginEmail == null与loginEmail == ""不是一个意思吗??
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

以下内容均摘自《你不知道的javascript(中卷)》

null 和 undefined 之间的 ==涉及隐式转换,在x=y中,ES5 规范 11.9.3.2-3 规定:

  • 如果 x 为 null, y 为 undefined,则结果为 true。

  • 如果 x 为 undefined, y 为 null,则结果为 true。

在 == 中 null 和 undefined 相等(它们也与其自身相等),除此之外其他值都不存在这种
情况,例如:

var a = null;

var b;

a == b; // true

a == null; // true

b == null; // true

a == false; // false

b == false; // false

a == ""; // false

b == ""; // false

a == 0; // false

b == 0; // false

null 和 undefined 之间的强制类型转换是安全可靠的,上例中除 null 和 undefined 以外的
其他值均无法得到假阳( false positive)结果。个人认为通过这种方式将 null 和 undefined
作为等价值来处理比较好。
例如:

var a = doSomething();

if (a == null) {

// ..

}

条件判断 a == null 仅在 doSomething() 返回非 null 和 undefined 时才成立,除此之外其
他值都不成立,包括 0、 false 和 "" 这样的假值。

查看完整回答
反对 回复 2018-11-17
  • 1 回答
  • 0 关注
  • 525 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信