Javascript if(a)与amp;if(a!=空&a!=未定义)
在DOM中填充数据时,我面临许多问题,因为我要使用的对象或数组中没有值 例如,我有一个对象:Javascript if(a)与amp;if(a!=空&a!=未定义),javascript,html,Javascript,Html,在DOM中填充数据时,我面临许多问题,因为我要使用的对象或数组中没有值 例如,我有一个对象: var obj = { name: 'rajat', age: 20 } 我正在动态填充HTML元素上的数据,如下所示: <p id='paragraph'></p> var data = document.getElementById('paragraph'); data.innerHTML = obj.name; var data=document.get
var obj = {
name: 'rajat',
age: 20
}
我正在动态填充HTML元素上的数据,如下所示:
<p id='paragraph'></p>
var data = document.getElementById('paragraph');
data.innerHTML = obj.name;
var data=document.getElementById('段落');
data.innerHTML=obj.name;
现在,我只想在给HTML元素赋值之前添加条件,我被if(obj.a)
和if(obj.a!=undefined&&obj.a!=null)
弄糊涂了
有人能解释一下这两者的区别吗
if (obj.a)
测试以查看obj.a
是否为null
、未定义的
、NaN
、0
、false
或”
(空字符串)中的任何一个
只需检查null
和undefined
,与
if (obj.a != null)
因为这就是=代码>已定义。事实上,这是使用的少数情况之一=代码>比更可取==代码>
[编辑]在一篇评论中指出,由于JavaScript中存在-0
(就像所有IEEE浮点系统中一样),这也是“错误的”。如果(obj.a)
将计算为true
,如果obj.a
的值是真的,那么一切都是真的,但是
false
0
+0
和-0
”
、”
和`
长度为0的字符串
null
未定义
NaN
if(obj.a!=undefined&&obj.a!=null)
即使obj.a
为
false
0
+0
和-0
”
、”
和`
长度为0的字符串
NaN
因此,它的排他性更小,obj.a
可以是更多的值,而不需要输入if
。在Javascript中,if
评估条件的“真实性”。以下值为“假”:
false
未定义
null
- “”
- +/-0
- 楠
其他任何内容都被评估为true
。因此,在您的情况下,if(obj.a)
将在obj.a
为上述任何项目符号值时计算为false。但是,if(obj.a!=undefined&&obj.a!=null)
将只检查这两个值(undefined
和null
),这意味着如果该值是任何其他错误项,它仍将计算为true
本博客是进一步解释的好资源:这与JavaScript类型强制有关,它是一个确定值如何转换为不同类型的概念。JavaScript是一种松散类型的语言(没有int、string等严格类型)
因此,如果JS引擎遇到if
语句,并已将表达式转换为布尔值
例如:
//布尔值将值转换为布尔值
//以下值转换为false,其余值转换为true
console.log(布尔值(0));//假的
console.log(布尔(“”));//假的
console.log(布尔值(null));//假的
console.log(布尔值(未定义));//假的
console.log(布尔值(NaN));//假的
console.log(布尔值(false));//假的
//另外,您还可以使用双精度转换为布尔值!!操作人员
//例如:
控制台日志(!!5);//真的
console.log(!!'random');//true
是false
与false
不同吗?我认为false是错误的,事实上它是固定的,因为我正在键入第二个的答案,如果有点混乱的话。如果obj.a
是“hello”、215或其他任何东西,它也将计算为true。知道它何时计算为false可能会很有用。@MarkMeyer我认为“即使,如果”这个词涵盖了这个列表仍然是不完整的。完整的列表是。而且NaN
是“错误的”。这仍然是不完整的。完整的列表是。@Xufox虽然该列表可能更明确,但我认为0
意味着+/-0
。我知道它们是不同的,但都是0。也就是说,我会在帖子中明确这一点。唯一的另一个区别是document.all
,它将在旧IE浏览器中实际评估true
(不太可能,但并非不可能)。假设代码>文档,我认为这是一个错误的做法。所有的< /代码>是FalSee。请参阅。此列表不完整。完整的列表是。@Xufox好的,你给了我-0
但是文档。所有的?这不可能在语言规范中。@Pointy MDN:提供对文档中所有元素的访问。这是一个遗留的非标准属性,不应使用。@Luca sure,它将是null
或未定义的
,但语言规范不知道或不关心浏览器API。换句话说,就JavaScript而言,document.all
和document.津巴布韦
if (obj.a != null)