-7

このステートメントは、テキスト ボックス内の "@" 記号をチェックするだけです。

if (string1.indexOf("@")==-1){
 alert("Please input a valid email address!")
 document.example.email.focus()

これ。if (string1.indexOf("@")==-1){0 ではなく -1 を使用するのはなぜですか。

0 はほとんどどこでも「null」または「空」の値として使用されているため、困惑します。

4

6 に答える 6

4

@の先頭で が見つかった場合、見つかったstring1としてもそのインデックスは 0 になるためです。

于 2012-09-20T07:59:14.440 に答える
3

ほとんどのプログラミング言語では、インデックスはゼロから始まります。つまり、インデックスの最初の位置 (ほとんどのプログラミング言語では、文字列は文字のインデックスです) は 0 になります。したがって、何も見つからなかったことを示すために 0 を使用することはできません。どこでも。


明確にするために:

Astringchars(文字、または単一シンボル型) のインデックスです。したがって、"hi@ho.com"は 9 つの位置を含むインデックスです。

[0] = 'h'
[1] = 'i'
[2] = '@'
[3] = 'h'
[4] = 'o'
[5] = '.'
[6] = 'c'
[7] = 'o'
[8] = 'm'

JavaScript のインデックスはゼロから始まるため、常に最初の位置が 0 から始まります。0 は実際にはインデックスの最初の位置であるため、0 を使用indexOfできないため、-1 を使用して、どこにも見つからなかったことを示します。@

stringsインデックスがなくても、ほとんどの言語は、伝統と事実上の標準の理由から、文字が見つからなかったことを示すために -1 を使用し、最初の位置を示すために 0 を使用します。

上記の例でindexOf("@")は、3 ではなく 2 が返されます。これも、インデックスが 0 から始まるためです。

于 2012-09-20T07:59:54.370 に答える
2

indexOf渡された文字列の最初のゼロベースのインデックス位置を返します。

  • string1で始まる場合は@を返し0ます。
  • string1の 2 番目の文字が@返される場合1
  • 3番目のキャラクターが戻ってきます2
  • 4番目のキャラクターが戻ってきます3
  • などなど...

-1-1ゼロベースのインデックス位置を持つことは不可能であるため、一致がない場合は が返されます。

0文字列がで始まる場合、これは結果と衝突するため使用できません@


の詳細については、indexOf次を参照してください。

http://www.tizag.com/javascriptT/javascript-string-indexOf.php

于 2012-09-20T08:02:25.220 に答える
0

これは、文字列内の文字が左から右にインデックス付けされ、0 が最初の文字であるためです。

したがって、文字/文字列が見つかった場合、0 から文字列の長さ - 1 までの範囲の結果が予想され、戻り値の型を同じに保つことが論理的に思われます。

于 2012-09-20T08:00:18.767 に答える
0

探していた文字列または文字セットが見つからなかったことを意味するため、-1 です。文字列は、他の配列と同様に文字の配列に似ているため、インデックスは常に 0 から始まります。

于 2012-09-20T08:02:00.493 に答える
0

理解を深めるのに役立つ例を次に示します。

var email = 'mymail@server.com';
//  indexes  0123456789...

ご覧のとおり、 のインデックスはm文字列の先頭にあるためゼロです。この例では、 が文字列の 6番目の位置にあるため、がindexOf('@')返されます。6@

では、@が見つからない場合、何を返すでしょうか? ゼロを返すことは、何か見つかったことを示すため、ゼロ以外の値を返す必要がありますindexOf-1

var invalidEmail = 'myEmail';
// indexes      -1 |0123456     
于 2012-09-20T08:16:09.493 に答える