5

次の Javascript 構文はどういう意味ですか? 構文全体を説明してください:

var x = 0;
x > 0 ? 1 : -1;  // confused about this line
alert(x);
4

4 に答える 4

20

それ自体は何の意味もありません。alertxの値は 0 で、それだけです。2 番目のステートメントは、何かに割り当てない限り意味がありません。ただし、これを行った場合:

var x=0;
var y = x > 0 ? 1 : -1;
alert(y);

あなたは-1を得たでしょう。

Conditional Operatorは IF ステートメントの省略形であり、基本的に次のように述べています。

の場合にアサートしますx > 0。そうであれば、1 を割り当てます。そうでなければ、-1 を割り当てます。

または、より一般的な形式で:

CONDITION ? VALUE_IF_TRUE : VALUE_IF_FALSE;

どこ:

  • CONDITION- ブール値に評価されるものなら何でもかまいません (型のジャグリング後でも)。
  • VALUE_IF_TRUECONDITION-がアサートされた場合に返される値TRUE
  • VALUE_IF_FALSECONDITION-がアサートされた場合に返される値FALSE
于 2012-05-12T20:05:45.970 に答える
2

それが条件演算子です。3 つのオペランドがあるため、これは三項演算子です。多くの場合、三項演算子と呼ばれますが、3 つのオペランドを持つ演算子はすべて三項演算子であるため、用語はかなり曖昧です。たまたま、一般的に使用される唯一の三項演算子です。

どういう意味ですか?表現

a?b:c

が true と評価される場合は に評価され、それ以外の場合は式は に評価されbます。ac

于 2012-05-12T20:21:48.240 に答える
1

これは三項演算子 (?)

IF ステートメントのようなものと考えてください。

「?」の前のステートメント あなたのif文の条件です。「:」の直前に続くものは、ステートメントが真の場合に実行/割り当てられるものです。「:」の後は、ステートメントが false の場合に実行/割り当てられるものです。

ただし、三項演算子から何も割り当てていないため、コードは 0 を警告します。

基本的にあなたのコードは言うかもしれません。
x = 0; alert(x); // this would alert 0

これを次のように修正する必要があります。
x = 0; var y = x > 0 ? 1 : -1; alert(y);

于 2012-05-12T20:12:31.600 に答える
0

-1 となります。これは三項演算子として知られています。

基本的にはこれに展開されます(x=2行目の先頭に置くつもりだったと仮定します)。

if(x>0){
  x = 1
} else {
  x = -1
}
于 2012-05-12T20:05:21.633 に答える