javascriptの中の「&」と「𞓜」について話します。
2789 ワード
時々、私たちはjQueryのフレームや他のjsのプラグインの中に「&&」と「𞓜𞓜」がたくさんあることを発見しますが、この二つのマークはいったいどういう意味ですか?どう使いますか?ちょっと深く追究する必要があると思います。
一、原理:
&オペレータの特徴:論理演算式の中で一つがfalseであればfalseの値を取ります。全部trueで後ろに取ります。全部falseが前に取ります。
|𞓜演算子の特徴:論理演算式では、一つがtrueであればtrueの値を取って、すべてtrueが前を取って、全部falseが後ろを取る。
js論理演算では、0、「」、null、false、undefined、NaNの5種類のデータタイプがfalseと判断されることを知っています。じゃ、私達はjsの論理演算を行う過程で、上の原理とこの5種類のデータタイプに基づいて対応する判断処理を行うことができます。直接DEMOに行く…
二、オリジナルDEMO:
まず問題を明らかにしてください!!
90点はA、80点はB、60点はC、その他はDを表します。
そうすればいいです。
JSコード:
実は、私達が「&&」と「124 124」を使うなら、上のように面倒をかける必要はないです。
scoreの値が90に等しいなら、score==90の論理式が成立し(つまりtrue)、後の「A」の割当演算が実行され、後の「124 124」論理演算も無視されます。
scoreの値が90に等しくないなら、score==90の論理式は成立しない(すなわちfalse)。「&&」操作子の特徴によって、「(score==90&A')」というコードは後ろの「A」の割当操作に実行されないことを知っています。同時に、「(score==90&A')」というコード全体の特徴によって、「false」論理式全体は後から実行されます。
この類推によって、前のすべての論理表現が成立しない場合、「𞓜|」の特徴(全部falseのために一番後ろの部分をとる)によって、最後のgrade割当値は「D」になります。
上記の論理演算をJSON形式で処理することもできます。
もちろん、上記の数値の比較はあまり実用的ではありません。例えば、学生の成績が85点になると、等級も「D」になります。これは明らかに不適切です。
上のコードを最適化して、数値の「等しい比較」を「範囲区間比較」に変えることができます。
一、原理:
&オペレータの特徴:論理演算式の中で一つがfalseであればfalseの値を取ります。全部trueで後ろに取ります。全部falseが前に取ります。
|𞓜演算子の特徴:論理演算式では、一つがtrueであればtrueの値を取って、すべてtrueが前を取って、全部falseが後ろを取る。
js論理演算では、0、「」、null、false、undefined、NaNの5種類のデータタイプがfalseと判断されることを知っています。じゃ、私達はjsの論理演算を行う過程で、上の原理とこの5種類のデータタイプに基づいて対応する判断処理を行うことができます。直接DEMOに行く…
二、オリジナルDEMO:
まず問題を明らかにしてください!!
90点はA、80点はB、60点はC、その他はDを表します。
そうすればいいです。
JSコード:
var score = 90;
var grade = '';
if(score === 90){
grade = "A";
}else if(score === 80){
grade = "B";
}else if(score === 60){
grade = "C";
}else{
grade = "D";
}
console.log(" :" + grade); // :A
またはこのようにします
var score = 90;
var grade = '';
switch(score){
case 90:
grade = "A";
break;
case 80:
grade = "B";
break;
case 60:
grade = "C";
break;
default:
grade = "D";
break;
};
console.log(" :" + grade); // :A
三、DEMOを最適化する:実は、私達が「&&」と「124 124」を使うなら、上のように面倒をかける必要はないです。
var score = 90;
var grade = (score===90 && 'A') || (score===80 && 'B') || (score===60 && 'C') || 'D';
console.log(" :" + grade); // :A
上のコードはこのように理解できます。scoreの値が90に等しいなら、score==90の論理式が成立し(つまりtrue)、後の「A」の割当演算が実行され、後の「124 124」論理演算も無視されます。
scoreの値が90に等しくないなら、score==90の論理式は成立しない(すなわちfalse)。「&&」操作子の特徴によって、「(score==90&A')」というコードは後ろの「A」の割当操作に実行されないことを知っています。同時に、「(score==90&A')」というコード全体の特徴によって、「false」論理式全体は後から実行されます。
この類推によって、前のすべての論理表現が成立しない場合、「𞓜|」の特徴(全部falseのために一番後ろの部分をとる)によって、最後のgrade割当値は「D」になります。
上記の論理演算をJSON形式で処理することもできます。
var score = 90;
var grade = {90:"A", 80:"B", 60:"C"}[score] || 'D';
console.log(" :" + grade); // :A
ここではJSONオブジェクトの属性読み取りを利用して、「JSONオブジェクト.属性値」が存在する場合(true)、対応する属性のkey値(A,BまたはC)を取得します。score属性値がJSONオブジェクトの中に存在しない場合、「𞓜𞓜」の後の内容、つまりgradeの値を「D」とします。もちろん、上記の数値の比較はあまり実用的ではありません。例えば、学生の成績が85点になると、等級も「D」になります。これは明らかに不適切です。
上のコードを最適化して、数値の「等しい比較」を「範囲区間比較」に変えることができます。
var score = 85;
var grade = (score>=90 && 'A') || (score>=80 && 'B') || (score>=60 && 'C') || 'D';
console.log(" :" + grade); // :B
以上が本文の全部です。本文の内容は皆さんの学習や仕事に一定の助けをもたらしてくれると同時に、私達を応援してください。