javascript - if(a) & if(a!=null && a!=undefined) 的区别
问题描述
在 DOM 中填充数据时,我面临很多问题,因为我想使用的对象或数组中没有值。
例如,我有一个对象:
var obj = {
name: 'rajat',
age: 20
}
我正在动态填充 HTML 元素上的数据,如下所示:
<p id='paragraph'></p>
var data = document.getElementById('paragraph');
data.innerHTML = obj.name;
现在,我只想在为 HTML 元素赋值之前添加条件,我对if(obj.a)
and感到困惑if(obj.a!=undefined && obj.a!=null)
。
谁能解释一下两者的区别?
解决方案
if (obj.a)
测试是否obj.a
不是null
, undefined
, NaN
, 0
, false
, 或""
(空字符串)。
if (obj.a != undefined && obj.a != null)
只检查null
and undefined
, 和 完全一样
if (obj.a != null)
因为这!=
就是定义的方式。事实上,这是使用!=
优于. 的少数情况之一!==
。
[编辑] 在评论中指出,因为-0
存在于 JavaScript 中(就像它在所有 IEEE 浮点系统中一样),所以这也是“错误的”。
推荐阅读
- c# - 为什么 C# 正则表达式信用卡验证函数会使用无效值进行验证?
- javascript - 如何将未知数量的数组索引整数设置为变量
- facebook - facebook 在没有 HTTPS 的情况下连接本地开发?
- php - 如何修复php接口的错误?还有用zend 3创建冲突
- php - 全局变量是否可以跨项目内的所有 php 页面访问。例如全局 $connection;
- mysql - MySQL:不同值的最大出现次数
- sql-server - 如何在从 debezium kafka connect 收到的 CDC 事件中获取表名和数据库名
- spring - HikariCP 是否支持类似于 C# 的 Spring Boot 应用程序中的命令超时
- javascript - 以编程方式更改 fullcalendar 4 的日期
- regex - Python3中的简单正则表达式与数字不匹配