?:
(条件付き、「3項」)演算子とは何か、およびその使用方法を簡単な言葉で誰かに説明してもらえますか?
?:
(条件付き、「3項」)演算子とは何か、およびその使用方法を簡単な言葉で誰かに説明してもらえますか?
回答:
これは、if-elseステートメントの1行の省略形です。これは条件演算子と呼ばれます。1
次に、条件演算子を使用して短縮できるコードの例を示します。
var userType;
if (userIsYoungerThan18) {
userType = "Minor";
} else {
userType = "Adult";
}
if (userIsYoungerThan21) {
serveDrink("Grape Juice");
} else {
serveDrink("Wine");
}
これは次のように短縮できます?:
:
var userType = userIsYoungerThan18 ? "Minor" : "Adult";
serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");
すべての式と同様に、条件演算子は副作用のあるスタンドアロンステートメントとしても使用できますが、これは縮小の外では珍しいことです。
userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
連鎖させることもできます:
serveDrink(userIsYoungerThan4 ? 'Milk' : userIsYoungerThan21 ? 'Grape Juice' : 'Wine');
ただし、注意してください。そうしないと、次のような複雑なコードになります。
var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;
1は、 多くの場合「三項演算子」と呼ばれるが、実際にはそれだけだ三項演算子[3つのオペランドを受け入れる演算子]。ただし、現在JavaScriptが持っているのはこれだけです。
ternary
は演算子のタイプです(つまり、3つの部分に分かれています)。名前、その特定の三項演算子ですconditional operator
。JSには三項演算子が1つしかないので、用語が誤用されます。
||
、左側の値が真である場合に短絡するため、これを行う一般的な方法は演算子を使用します。
与えられた答えにいくつか追加したいと思います。
「設定されている場合は変数を表示し、それ以外は...」のような状況で3項に遭遇した(または使用したい)場合は、3項なしでさらに短くすることができます。
の代わりに:
var welcomeMessage = 'Hello ' + (username ? username : 'guest');
以下を使用できます。
var welcomeMessage = 'Hello ' + (username || 'guest');
これは、PHPの簡易3項演算子と同等のJavascriptです。 ?:
あるいは:
var welcomeMessage = 'Hello ' + (username || something || maybethis || 'guest');
変数を評価し、それがfalseまたは設定されていない場合は、次に進みます。
'Hello ' + (username ? username : 'guest')
、Hello +
無視され、ちょうど三項演算の結果が返された場合。なぜ誰かが説明できますか?
'Hello ' + username
、常にあるtrue
、それは0よりも大きい長さを持つ文字列だから
これは、「三項」または「条件付き」演算子と呼ばれます。
例
?:演算子は、if ... elseステートメントのショートカットとして使用できます。これは通常、if ... elseステートメントが扱いにくい場合に、より大きな式の一部として使用されます。例えば:
var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");
この例では、「こんばんは」という文字列を作成します。午後6時以降の場合。if ... elseステートメントを使用する同等のコードは次のようになります。
var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
greeting += " evening.";
else
greeting += " day.";
基本的には、これは簡単な条件文です。
こちらもご覧ください:
あなたが持っているすべてがシンボルである場合、グーグルするのは少し難しいです;)使用する用語は「JavaScript条件演算子」です。
JavaScriptでさらに面白い記号が見つかった場合は、まずJavaScriptの演算子を検索してみてください。MDCの演算子リストです。あなたが遭遇する可能性が高い唯一の例外は$
シンボルです。
あなたの質問に答えるために、条件演算子は単純なifステートメントを置き換えます。例が最適です:
var insurancePremium = age > 21 ? 100 : 200;
の代わりに:
var insurancePremium;
if (age > 21) {
insurancePremium = 100;
} else {
insurancePremium = 200;
}
var olderThan20 = age > 20;
代わりに使用したいです。
z = (x == y ? 1 : 2);
に相当
if (x == y)
z = 1;
else
z = 2;
もちろん、それよりも短いです。
答えのほとんどは正しいですが、もう少し追加したいと思います。三項演算子は、それができることを意味しており、右結合で連鎖し、次のようにif … else-if … else-if … else
:
function example() {
return condition1 ? value1
: condition2 ? value2
: condition3 ? value3
: value4;
}
に相当:
function example() {
if (condition1) { return value1; }
else if (condition2) { return value2; }
else if (condition3) { return value3; }
else { return value4; }
}
詳細はこちら
三項演算子と呼ばれます
tmp = (foo==1 ? true : false);
三項演算子
通常、JavaScriptには条件文があります。
例:
if (true) {
console.log(1)
}
else {
console.log(0)
}
# Answer
# 1
ただし、2行以上含まれており、変数に割り当てることはできません。JavaScriptには、この問題の3 項演算子の解決策があります。三項演算子は、1行で記述して変数に割り当てることができます。
例:
var operator = true ? 1 : 0
console.log(operator)
# Answer
# 1
この三項演算子は、Cプログラミング言語で類似しています。
それは if statement
1行にすべて。
そう
var x=1;
(x == 1) ? y="true" : y="false";
alert(y);
評価される式は、 ( )
trueに一致する場合は、 ?
falseと一致する場合は、 :
x = 9
y = 8
単項
++x
--x
バイナリ
z = x + y
ターナリー
2>3 ? true : false;
2<3 ? true : false;
2<3 ? "2 is lesser than 3" : "2 is greater than 3";
それはと呼ばれていternary operator
ます。詳細については、これに関して私が回答した別の質問があります。
conditional operator
。JSには三項演算子が1つしかないので、用語が誤用されます。
これはおそらく、これを行う最もエレガントな方法ではありません。しかし、3項演算子に慣れていない人にとっては、これは役立つかもしれません。私の個人的な好みは、条件ブロックの代わりに1行のフォールバックを行うことです。
// var firstName = 'John'; // Undefined
var lastName = 'Doe';
// if lastName or firstName is undefined, false, null or empty => fallback to empty string
lastName = lastName || '';
firstName = firstName || '';
var displayName = '';
// if lastName (or firstName) is undefined, false, null or empty
// displayName equals 'John' OR 'Doe'
// if lastName and firstName are not empty
// a space is inserted between the names
displayName = (!lastName || !firstName) ? firstName + lastName : firstName + ' ' + lastName;
// if display name is undefined, false, null or empty => fallback to 'Unnamed'
displayName = displayName || 'Unnamed';
console.log(displayName);
次の例のように、長さだけでなくJqueryでも使用できます。
値があり、firstnameとlastnameを取得するGuarantorNameテキストボックスがあるとします。nullの場合もあります。だからラタール
var gnamesplit = $("#txtGuarantorName").val().split(" ");
var gLastName = "";
var gFirstName = "";
if(gnamesplit.length > 0 ){
gLastName = gnamesplit[0];
}
if(gnamesplit.length > 1 ){
gFirstName = gnamesplit[1];
}
最小限のコードでJqueryを使用して以下のコードを使用できます
var gnamesplit = $("#txtGuarantorName").val().split(" ");
var gLastName = gnamesplit.length > 0 ? gnamesplit[0] : "";
var gFirstName = gnamesplit.length > 1 ? gnamesplit[1] : "";
$("#txtLastName").val(gLastName);
$("#txtFirstName").val(gFirstName);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div >
Guarantor Name: <input type="text" id="txtGuarantorName" value="ASP.NET Core" /><br/>
<br/>
<br/>
First Name: <input type="text" id="txtLastName" value="ASP.NET Core" />
Last Name: <input type="text" id="txtFirstName" value="ASP.NET Core" />
</div>
三項式は、JS、特にReactで非常に役立ちます。ここに、提供された多くの優れた詳細な質問に対する簡単な答えがあります。
condition ? expressionIfTrue : expressionIfFalse
expressionIfTrue
OG ifステートメントがtrueになると考えてください。elseステートメント
と考えてexpressionIfFalse
ください。
例:
var x = 1;
(x == 1) ? y=x : y=z;
これはxの値をチェックし、最初のy =(value)がtrueの場合に返され、2番目のコロンの後に戻ります:falseの場合y =(value)を返しました。
条件付き(3項)演算子は、3つのオペランドを取る唯一のJavaScript演算子です。この演算子は、ifステートメントのショートカットとしてよく使用されます。
condition ? expr1 : expr2
条件が真の場合、演算子はexpr1の値を返します。それ以外の場合は、expr2の値を返します。
function fact(n) {
if (n > 1) {
return n * fact(n-1);
} else {
return 1;
}
// we can replace the above code in a single line of code as below
//return (n != 1) ? n * fact(n - 1) : 1;
}
console.log(fact(5));
詳細については、MDNドキュメントのリンクをご覧ください。
JavaScriptに 1つの条件チェックインスタンス関数がある場合。三項演算子を使用するのは簡単です。実装するのに必要なのは1行だけです。例:
private module : string ='';
private page:boolean = false;
async mounted(){
if(this.module=== 'Main')
{
this.page = true;}
else{
this.page = false;
}
}
このような1つの条件を持つ関数は、次のように書くことができます。
this.page = this.module=== 'Main' ?true:false;
状態 ?Trueの場合:Falseの場合
(sunday == 'True') ? sun="<span class='label label-success'>S</span>" : sun="<span class='label label-danger'>S</span>";
sun = "<span class='label " + ((sunday === 'True' ? 'label-success' : 'label-danger') + "'>S</span>"
sunday ?
sun = "<span class='label " + ((sunday === 'True' ? 'label-success' : 'label-danger') + "'>S</span>"