次の Javascript 構文はどういう意味ですか? 構文全体を説明してください:
var x = 0;
x > 0 ? 1 : -1; // confused about this line
alert(x);
次の Javascript 構文はどういう意味ですか? 構文全体を説明してください:
var x = 0;
x > 0 ? 1 : -1; // confused about this line
alert(x);
それ自体は何の意味もありません。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_TRUE
CONDITION
-がアサートされた場合に返される値TRUE
。VALUE_IF_FALSE
CONDITION
-がアサートされた場合に返される値FALSE
。それが条件演算子です。3 つのオペランドがあるため、これは三項演算子です。多くの場合、三項演算子と呼ばれますが、3 つのオペランドを持つ演算子はすべて三項演算子であるため、用語はかなり曖昧です。たまたま、一般的に使用される唯一の三項演算子です。
どういう意味ですか?表現
a?b:c
が true と評価される場合は に評価され、それ以外の場合は式は に評価されb
ます。a
c
これは三項演算子 (?)
IF ステートメントのようなものと考えてください。
「?」の前のステートメント あなたのif文の条件です。「:」の直前に続くものは、ステートメントが真の場合に実行/割り当てられるものです。「:」の後は、ステートメントが false の場合に実行/割り当てられるものです。
ただし、三項演算子から何も割り当てていないため、コードは 0 を警告します。
基本的にあなたのコードは言うかもしれません。
x = 0;
alert(x);
// this would alert 0
これを次のように修正する必要があります。
x = 0;
var y = x > 0 ? 1 : -1;
alert(y);
-1 となります。これは三項演算子として知られています。
基本的にはこれに展開されます(x=
2行目の先頭に置くつもりだったと仮定します)。
if(x>0){
x = 1
} else {
x = -1
}