数字

时间:2015-08-14 05:21:49

标签: javascript html ternary-operator

基本上下面的代码是对rowind变量进行比较并显示alert,但不知何故它输出为Not Zero,即使它为零,那么它也会输出为" Not Zero",任何人都可以让我知道可能是什么原因?

<head>
    <script language="javascript" type="text/javascript">

     var rowind = 0;
    var newind = ((rowind == '')) ? "Blank" : "Some number";

    //Output is Blank
    alert(newind);

    </script>
</head>
<body>
</body>
</html>

3 个答案:

答案 0 :(得分:1)

您正在检查变量rowind是否等于条件中的空字符串。

((rowind == '')) // this will return as false since you variable is not an empty string. Rather it contains a string with 0 character

如果要比较字符串,请使用以下内容。

((rowind == '0')) //This will return true since the string is as same as the variable.

<强>更新

您提出的问题与javascript类型转换有关。

The MDN Doc

  

平等(==)

     

如果操作数不相同,则等于运算符转换操作数&gt;类型,然后应用严格的比较。如果两个操作数都是对象,那么&gt; JavaScript比较操作数&gt;时相同的内部引用。在内存中引用相同的对象。

以上解释了==运算符在javaascript中的工作原理。

在您的示例中,''被转换为数字,因为它与类型编号变量进行比较。所以javascript将''视为数字,''等于0.因此在您的条件中返回true。

console.log(0 == '0');  //True
console.log(0 == '');   //True
console.log('' == '0'); //False

以下是strict comparison用作示例。

console.log(3 == '3') //True
console.log(3 === '3') //False

答案 1 :(得分:1)

0 == '' returns true in javascript

左操作数的类型为Number。 右操作数的类型为String。

在这种情况下,右操作数被强制转换为Number:

类型
0 == Number('')

导致

0 == 0  // which definitely is true

是的

0 === '' will return false

因为,身份运算符===不进行类型强制,因此在比较时不会转换值。

答案 2 :(得分:0)

比较是在字符串之间,'0'不等于''。

因为'0'!=''不会将它们中的任何一个转换为布尔值,因为它们属于同一类型 - String。