此语句只检查文本框中的“@”符号。
if (string1.indexOf("@")==-1){
alert("Please input a valid email address!")
document.example.email.focus()
此。 if (string1.indexOf("@")==-1){
为什么我们使用-1而不是0.
令我感到困惑,因为0几乎在所有地方都被用作'null'或'empty'值。
答案 0 :(得分:4)
因为如果在@
的最开始找到string1
,即使找到它,其索引也会为0.
答案 1 :(得分:3)
在大多数编程语言中,索引从零开始,意味着索引中的第一个位置(同样在大多数编程语言中,字符串是字符索引)将为0 - 因此0不能用于表示在任何地方都找不到任何东西。
帮助澄清:
string
是chars
的索引(字符或单符号类型)。因此,"hi@ho.com"
是一个包含9个位置的索引:
[0] = 'h'
[1] = 'i'
[2] = '@'
[3] = 'h'
[4] = 'o'
[5] = '.'
[6] = 'c'
[7] = 'o'
[8] = 'm'
因为JavaScript中的索引从零开始,所以它们的第一个位置始终为0. indexOf
使用-1来告诉您它找不到{{1}在任何地方,因为它不能使用0,因为0实际上是索引的第一个位置。
即使@
不是索引大多数语言仍会使用-1表示找不到该字符,而0表示第一个位置是出于传统和de的原因事实上的标准。
在上面的示例中,strings
将返回2,而不是3.再次,因为索引从零开始。
答案 2 :(得分:2)
indexOf
返回传递的字符串的第一个从零开始的索引位置。
string1
以@
开头,则会返回0
。string1
的第二个字符为@
,则会返回1
2
3
-1
,因为它不可能有-1
从零开始的索引位置。
0
无法使用,因为如果字符串以@
indexOf
的更多信息可以在这里找到:
http://www.tizag.com/javascriptT/javascript-string-indexOf.php
答案 3 :(得分:0)
这是因为字符串中的字符从左到右编制索引,0是第一个字符。
因此,如果找到一个字符/字符串,你会期望从0到字符串长度的一系列结果 - 1,并且保持返回类型相同似乎是合乎逻辑的。
答案 4 :(得分:0)
它是-1,因为这意味着它无法找到您正在寻找的字符串或字符集。由于字符串就像一个字符数组,就像在任何其他数组中一样,索引始终以0开头。
答案 5 :(得分:0)
以下示例可帮助您更好地理解:
var email = 'mymail@server.com';
// indexes 0123456789...
正如您所看到的,m
的索引为零,因为它位于字符串的开头,因此在此示例中,indexOf('@')
将返回6
,因为{{ 1}}位于字符串中的6 th 位置。
所以,如果找不到@
,我们会回报什么?返回零表示找到了 的内容,因此我们希望返回一个非零值,根据@
indexOf
-1