JavaScript索引大于-1时为false';显然不是吗?

JavaScript索引大于-1时为false';显然不是吗?,javascript,Javascript,id为“post_url”的字段的值为。对于大于-1,JavaScript不应该返回true吗 alert('1a = '+id_('post_url').value.indexOf('http:'));// 0 alert('1b = '+id_('post_url').value.indexOf('http:') > -1);// false alert('2a = '+id_('post_url').value.indexOf('www.'));// 7 ale

id为“post_url”的字段的值为。对于大于
-1
,JavaScript不应该返回true吗

alert('1a = '+id_('post_url').value.indexOf('http:'));//      0
alert('1b = '+id_('post_url').value.indexOf('http:') > -1);// false
alert('2a = '+id_('post_url').value.indexOf('www.'));//       7
alert('2b = '+id_('post_url').value.indexOf('www.') > -1);//  false

您正在比较字符串和数字。在进行
比较之前,您正在将
索引of
(我假设是
-1
)的结果连接到一个字符串。这相当于
NaN>-1

"1b-1" > -1 // => false
您正在将2b添加到的索引中,因此它不会保持为整数,而是将值作为字符串2b+您拥有的任何索引。这就是你观察的原因。

检查 加法/字符串串联比关系比较具有更高的优先级

您的代码需要一些括号/分组运算符来解决以下问题:

alert( '1b = ' + ( id_('post_url').value.indexOf('http:')>-1 ) ); // 1b = true

您正试图将字符串串联作为一个数字进行求值,结果返回false

'2b'+id_('post_url').value.indexOf('www.')>-1
…使用操作顺序,将字符串
2B
添加到由
id\u('post\u url')返回的索引中。value.indexOf('www.)

因此,将整个对象转换为字符串,并计算字符串是否大于-1

以下是您需要如何编写警报

alert(id_('post_url').value.indexOf('www.')>-1);

这应该会提示“true”。

您能用一组额外的括号试试吗<代码>警报('1b'+(id_('post_url').value.indexOf('http:')>-1))请接受正确的答案,而不是将答案添加到您的问题中。为了它的价值,不要再弄乱格式了。粗体的“返回”语句令人眼花缭乱,额外的换行符无法帮助任何人确定实际返回的值。正如@Cerbrus所说,请不要在问题的答案中编辑。我锁定此问题以防止进一步编辑。我认为它可以保持原样。
alert(id_('post_url').value.indexOf('www.')>-1);