Javascript 为什么在方法不返回值时使用-1?
此语句仅检查文本框中的“@”符号Javascript 为什么在方法不返回值时使用-1?,javascript,Javascript,此语句仅检查文本框中的“@”符号 if (string1.indexOf("@")==-1){ alert("Please input a valid email address!") document.example.email.focus() 这个如果(string1.indexOf(“@”)==-1{为什么我们使用-1而不是0 这让我感到困惑,因为0几乎在任何地方都被用作“null”或“empty”值。因为如果@是在string1的最开始处找到的,那么即使找到了它,它的索引也将是0。
if (string1.indexOf("@")==-1){
alert("Please input a valid email address!")
document.example.email.focus()
这个<代码>如果(string1.indexOf(“@”)==-1{为什么我们使用-1而不是0
这让我感到困惑,因为0几乎在任何地方都被用作“null”或“empty”值。因为如果
@
是在string1
的最开始处找到的,那么即使找到了它,它的索引也将是0。在大多数编程语言中,索引是零基的,这意味着索引中的第一个位置(同样,在大多数编程语言中,字符串是字符的索引)将是0-因此0不能用来表示在任何地方都找不到任何内容
为了帮助澄清:
字符串
是字符
(字符或单个符号类型)的索引hi@ho.com“是一个包含9个位置的索引:
[0] = 'h'
[1] = 'i'
[2] = '@'
[3] = 'h'
[4] = 'o'
[5] = '.'
[6] = 'c'
[7] = 'o'
[8] = 'm'
因为JavaScript中的索引是基于零的,所以它们总是从第一个位置0开始。indexOf
使用-1告诉您它在任何地方都找不到@
,因为它不能使用0,因为0实际上是索引的第一个位置
即使字符串
不是索引,出于传统和事实标准的原因,大多数语言仍然使用-1表示找不到字符,0表示第一个位置
在上面的示例中,
indexOf(“@”)
将返回2,而不是3。这也是因为索引是从零开始的。这是因为字符串中的字符是从左向右索引的,0是第一个字符
因此,如果您找到了一个字符/字符串,那么您期望的结果范围从0到字符串长度-1,并且保持返回类型相同似乎是合乎逻辑的。它是-1,因为这意味着它找不到您要查找的字符串或字符集。因为字符串与任何其他数组中的字符类似,所以index总是以0开头。
indexOf
返回传递字符串的第一个从零开始的索引位置
- 如果
以string1
开头,则它将返回@
0
- 如果
的第二个字符是string1
,它将返回@
1
- 第三个字符将返回
2
- 第四个字符将返回
3
- 等等等等
-1
,因为不可能有-1
基于零的索引位置
不能使用0
,因为如果字符串以@
有关
indexOf
的更多信息,请参见:
以下是一个帮助您更好理解的示例:
var email = 'mymail@server.com';
// indexes 0123456789...
正如您所看到的,m
的索引是零,因为它位于字符串的开头,所以在本例中,indexOf('@')
将返回6
,因为@
位于字符串的第6位
因此,如果未找到@
,我们将返回什么?返回零表示找到了某个对象,因此我们希望返回一个非零值,根据索引,它是-1
var invalidEmail = 'myEmail';
// indexes -1 |0123456
这个问题就像一个缓慢的搜索引擎结果:)