var loginEmail = $.trim($("input[name='email']").val()); if (loginEmail == null || loginEmail == '邮箱' || loginEmail == "") { $(".smtwarning").empty().text("您的邮箱账号忘记输入了"); } 这个代码中loginEmail == null与loginEmail == ""不是一个意思吗??
null是javascript的内置对象。值 null 是一个 JavaScript 字面量,表示空值(null or an "empty" value),即没有对象被呈现(no object value is present)。它是 JavaScript 原始值 之一。而《""》是一个char型的值,和'a'、'b'是一样滴。可以看下这里MDN
所以在JS
中判断字符串是否有值应该用!str
,当然,str
本身应该经过一轮trim
。
$.trim 的返回值类型只有字符串,所以是不用判断是否为null的。null
和 ""
是两种类型,不是一个意思。只是转成 boolen 值都是 false 。
不是一个意思,
""可能是$("input[name='email']").val()取到的值为''或只包含空格的字符串,
null只可能是$("input[name='email']")没有获取到相关元素。
不是,null表示“没有对象”,而""表示一个空白的字符串,空白字符串也是对象,只不过字符串里没有字符。
null表示空对象指针
null == '' // false
另外感觉这里判断有问题吧 前面 var loginEmail = $.trim($("input[name='email']").val()); 这句代码里取出来的不会出现null这样的值吧 直接判断空就好了
以下内容均摘自《你不知道的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 和 "" 这样的假值。