我比较了一些字符串和数字,将结果视为真和假
"dfdf" > 1
false
"dfdf" > 99
false
"dfdf" > 9999
false
"dfdf" > 99999
false
1> ''
true
1> '545'
false
1> '545d'
false
1> '555'
false
1> 'ddfdf'
false
9999 > 'dfsdfadf'
false
我已经在代码中尝试了几种不同的组合,但是你得到了混合的结果,并想知道javascript中的比较是如何工作的。
另一个更令人困惑的补充
"dasfads" > "dasfdsf"
false
"abc" > "a"
true
"abc" > "agf"
false
"abcf" > "agf"
false
答案 0 :(得分:2)
将字符串与数字进行比较将强制将字符串数据计算为数字值。如果字符串数据不能转换为数值,它将返回给定比较的NaN数。
由于NaN 不具有可比性,根本不等于任何东西,甚至不是另一个NaN
namespace GenerateApp
{
public partial class Form1 : Form
{
string[] name = new string[4];
public Form1()
{
InitializeComponent();
name[0] = textBox2.Text;
name[1] = textBox3.Text;
name[2] = textBox5.Text;
name[3] = textBox6.Text;
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < name.Length; i++)
{
}
}
}
}
&#39;大于&#39;或者小于&#39; NaN比较必须以两种方式返回 false 。因为这是唯一正确的答案,所以没有什么比你没有的更大或更小。因此两种说法都是错误的。例如:NaN == NaN > false
和0 > NaN
&gt;假。
但请记住,比较两个数据字符串,例如:
0 < NaN
将返回比较 false ,
然而:
&#34;图9A&#34; &GT; &#34; 999&#34;将返回 true
这是一个非常强大的事情,因为知道这一点(两个字符串将按字母顺序进行比较),您可以比较时间数据,而无需承担将这些值转换为数字的负担,并直接使用:< / p>
"98A" > "999"
幸运的是"09:32:28" > "09:31:59" > true
纯粹(语言)的机会。
答案 1 :(得分:1)
正在尝试将字符串转换为数字。
在控制台中,如果你这样做
x = +''
然后x
将设置为0
。 1 > 0
为true
。
对于所有其他的,如果您执行类似
的操作x = +'dfdf'
然后x
将设置为NaN
(不是数字),与它的任何比较都将返回false。
答案 2 :(得分:0)
使用JavaScript时有两种类型的比较,
标准相等运算符(==和!=)使用抽象等式比较算法来比较两个操作数。如果操作数具有不同的类型,它将在进行比较之前尝试将它们转换为相同的类型,例如,在表达式5 ==&#39; 5&#39;中,右边的字符串将转换为数字之前进行比较。
严格相等运算符(===和!==)使用严格等式比较算法,用于对相同类型的操作数执行相等比较。如果操作数的类型不同,结果总是假的,所以5!==&#39; 5&#39;。
因此,如果您想知道那里发生了什么,JavaScript会尝试将字符串转换为数字,然后进行比较,但是,因为它们不是数字,总是转换为NaN,并且与NaN的比较将等于假。
详情链接:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators
答案 3 :(得分:0)
String Vs String
比较字符串时,逐个字符地进行比较。在两个字符串中找到的第一个不同字符将使用其char代码进行比较。 (注意:之后的字符将被忽略。)
>> "a".charCodeAt(0)
97
>> "}".charCodeAt(0)
125
>> "}" > "a"
true
>> "-}" > "a"
false
字符串与数字
每次将字符串与数字进行比较时,字符串将转换为整数,然后比较两者。 如果字符串无法转换为数字,则返回false。(注意:NaN,Nothing可以与NaN进行比较。任何与NaN的比较都将返回false)
>> 'dfsdfadf' > 999999 // Can't be converted to integer, hence false
false
>> 'd' > 9999999999 // Can't be converted to integer, hence false
false
>> '' == false // '' is empty string which is 0 or false
true
>> 1 > '' // '' is false,0 explained in prev case
true