该语句仅检查文本框中的“@”符号。
if (string1.indexOf("@")==-1){
alert("Please input a valid email address!")
document.example.email.focus()
这。if (string1.indexOf("@")==-1){
为什么我们使用 -1 而不是 0。
这让我感到困惑,因为 0 几乎在任何地方都被用作“空”或“空”值。
该语句仅检查文本框中的“@”符号。
if (string1.indexOf("@")==-1){
alert("Please input a valid email address!")
document.example.email.focus()
这。if (string1.indexOf("@")==-1){
为什么我们使用 -1 而不是 0。
这让我感到困惑,因为 0 几乎在任何地方都被用作“空”或“空”值。
因为如果@
在 的开头找到 ,string1
即使找到它,它的索引也将为 0。
在大多数编程语言中,索引是从零开始的,这意味着索引中的第一个位置(同样在大多数编程语言中,字符串是字符的索引)将是 0 - 因此 0 不能用于表示没有找到任何内容任何地方。
为了帮助澄清:
Astring
是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 来告诉你它找不到@
任何地方,因为它不能使用 0,因为 0 实际上是索引的第一个位置。
即使strings
不是索引,由于传统和事实标准的原因,大多数语言仍会使用 -1 表示找不到字符,使用 0 表示第一个位置。
在上面的示例中,indexOf("@")
将返回 2,而不是 3。同样,因为索引是从零开始的。
indexOf
返回传递的字符串的第一个从零开始的索引位置。
string1
以@
then 开头,它将返回0
。string1
的第二个字符是@
它将返回1
2
3
-1
如果没有匹配,则返回,因为它不可能有-1
从零开始的索引位置。
0
不能使用,因为如果字符串以@
更多信息indexOf
可以在这里找到:
http://www.tizag.com/javascriptT/javascript-string-indexOf.php
这是因为字符串中的字符是从左到右索引的,0 是第一个字符。
因此,如果您找到一个字符/字符串,您会期望从 0 到字符串长度的结果范围 - 1,并且保持返回类型相同似乎是合乎逻辑的。
它是-1,因为这意味着它无法找到您正在寻找的字符串或字符集。由于字符串就像一个字符数组,就像在任何其他数组中一样,索引总是从 0 开始。
这是一个示例,可以帮助您更好地理解:
var email = 'mymail@server.com';
// indexes 0123456789...
如您所见, 的索引m
为零,因为它位于字符串的开头,因此在此示例indexOf('@')
中将返回6
,因为位于字符串中@
的第 6位。
那么,如果@
没有找到,我们会返回什么?返回零表示找到了一些东西,所以我们要返回一个非零值,根据indexOf
是-1
var invalidEmail = 'myEmail';
// indexes -1 |0123456