javascript - null与""的问题
天蓬老师
天蓬老师 2017-04-11 12:01:55
[JavaScript讨论组]
        var loginEmail = $.trim($("input[name='email']").val());  
        
       if (loginEmail == null || loginEmail == '邮箱' || loginEmail == "") {  
           $(".smtwarning").empty().text("您的邮箱账号忘记输入了");  
             
           }  
           
           
         这个代码中loginEmail == null与loginEmail == ""不是一个意思吗??
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(7)
ringa_lee

以下内容均摘自《你不知道的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 和 "" 这样的假值。

天蓬老师

null表示空对象指针

null == '' // false

另外感觉这里判断有问题吧 前面 var loginEmail = $.trim($("input[name='email']").val()); 这句代码里取出来的不会出现null这样的值吧 直接判断空就好了

阿神

不是,null表示“没有对象”,而""表示一个空白的字符串,空白字符串也是对象,只不过字符串里没有字符。

大家讲道理

不是一个意思,
""可能是$("input[name='email']").val()取到的值为''或只包含空格的字符串,
null只可能是$("input[name='email']")没有获取到相关元素。

伊谢尔伦

$.trim 的返回值类型只有字符串,所以是不用判断是否为null的。
null"" 是两种类型,不是一个意思。只是转成 boolen 值都是 false 。

PHP中文网

所以在JS中判断字符串是否有值应该用!str,当然,str本身应该经过一轮trim

高洛峰

null是javascript的内置对象。值 null 是一个 JavaScript 字面量,表示空值(null or an "empty" value),即没有对象被呈现(no object value is present)。它是 JavaScript 原始值 之一。而《""》是一个char型的值,和'a'、'b'是一样滴。可以看下这里MDN

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号