2012-05-27 43 views
0

可能从一个困惑的javascript小白一个非常基本的问题...为什么var combined = null +“”有一个值?

为什么

var hasthisvalue = null; 
if (hasthisvalue) 
    print("hasthisvalue hs value"); 

var hasthatvalue = ""; 
if (hasthatvalue) 
    print("hasthatvalue has value"); 

不显示任何信息,但如果我结合这两种

var combined = "hasthisvalue" + "hasthatvalue"; 
if (combined) 
    print ("combined has value"); 

它呢?

或者更直接:

var combined = null + ""; 
if (combined) 
    print ("combined has value"); 

为什么“组合拳”有一个值,如果我只补充一点,没有价值的两个变量?我错过了什么?

+0

因为非空字符串是真正的值。 'null +“”'是字符串'“null”'。 – MaxArt

+0

第二个,你的转换。首先,我认为你的意思与众不同。 –

+0

在第一种情况下,您串联2个字符串,而不是变量。 – Ixx

回答

3

当您将它们分别进行比较时,它们都会在if检查中转换为false。当你把他们来说,null成为字符串"null",所以他们的拼接是字符串"null",不转换为false

2

第2个实例是其中的值是“falsy”情况。这些值是一个松散比较期间等于false

  • 未定义
  • 空字符串
  • 布尔假
  • 数字0
  • 的NaN

其他值不是我n这个清单是“truthy”并等于true宽松比较

第三种情况,你可以在控制台上试试。 null+''成为字符串:"null",因此是truthy。

相关问题