「JavaScript Domプログラミング芸術」読書ノート(二)

5402 ワード

算術演算子
加減乗除これらの算術演算のいずれも、対応するオペレータを介して行われなければなりません.オペレータは、JavaScriptが各種の操作を完了するために定義したいくつかの記号です.等号(=)、プラス記号(+)、マイナス記号(-)、乗算記号(*)、除号(/)
次は簡単な足し算です.

1 + 4
複数の操作を組み合わせることもできます.

1 + 4 * 5
曖昧さを避けるために、括弧で別の動作を分けることができます.
1 + (4 * 5)
(1 + 4) * 5
変数には操作が含まれます.

var total = (1 + 4) * 5;
変数を操作することもできます.
var temp_fahrenheit = 95;
var temp_celsius = (temp_fahrenheit - 32) / 1.8;
JavaScriptはまた、各種の常用動作の略語として非常に有用なオペレータを提供しています.例えば、1つの数値変数に1を加算したい場合は、次のようなステートメントが使用されます.

year = year + 1;
同様の目的を達成するために++操作子を使用することもできます.

year++;
同様に、1つの数値変数の値を1つ減算します.
プラス記号(+)は特殊な操作子で、数値にも使えるし、文字列にも使えます.二つの文字列を一つにまとめると直感的で分かりやすい操作です.
var message = "I am feeling" + "happy";
このように複数の文字列の先頭を連結する操作をスティッチングといいます.このスプラインは変数によっても達成できます.
var mood = "happy";
var message = "I am feeling" + mood;
数値と文字列をつなぎ合わせることもできます.JavaScriptは弱いタイプの言語なので、この操作は許可されています.このとき、数値は自動的に文字列に変換されます.
var year = 2005;
var message = "The year is" + year;
文字列をつなぎ合わせると、より長い文字列になります.しかし、同じオペレータで「綴り」という二つの数値を使うと、その結果はその二つの数値の算術となります.次の2つのalert文の実行結果を比較します.

alert ("10" + 20);
alert (10 + 20);
第1条alert文は文字列1020を返し、第2条alert文は数値30を返します.第一条は文字列「10」と数値20をつなぎ合わせた結果である.第二条は数値10と数値20をウィッグ演算した結果である.
もう一つの非常に有用なショートカット演算子は+=であり、「加算と賦課」(または「つなぎ合わせと賦課」)の動作を一回で行うことができます.

var year = 2010;
var message = "The year is";
message += year;
これらのステートメントを実行した後、変数メッセージの値は「The year is 2005」になります.この結果は次のようなalertダイアログで検証できます.

alert(message);
条件文
スクリプトを説明する時、ブラウザはこのスクリプトの各ステートメントを順次実行します.このスクリプトで条件文を使って条件を設定できます.この条件を満たすだけで、より多くのステートメントが実行されます.最も一般的な条件文はif文で、以下はif文の基本文法です.
if(condition) {
    statements;
}
条件はifの後ろの丸括弧に入れてください.条件の求めの結果は永遠にブール値です.つまりtrueまたはfalseだけです.括弧の中の語句――いくらあっても、与えられた条件の評価結果がtrueである場合にのみ実行されます.したがって、次の例では、alertメッセージは永遠に発生しない.
if(1 > 2) {
    alert("The world has gone mad!")
}
 
1は2より大きいはずがないので、上の条件の値は常にfalseです.
実際には、if文の中の括弧そのものが必要ではありません.if文の中の括弧部分が一つの語句しか含まれていない場合、括弧は使わず、またこのif文の内容は全部同じ行に書いてもいいです.
if(1 > 2) alert("The world has gone mad!");
ただし、括弧は脚本の可読性を高めることができますので、if文ではいつも括弧を使うのが良い習慣です.
if文にはelse字句があります.else字句に含まれる語句は、与えられた条件が偽である場合に実行されます.
if(1 > 2) {
    alert("The world has gone mad!")
} else {
    alert("All is well with the world")
}
条件「1」2の値がfalseであるため、最後のボックスはelseの中身を示す.
比較演算子
JavaScriptはまた、多くの条件文でしか使用できないオペレータを提供しています.ここでは、例えば、(>)より大きい、小さい(=)より小さい、小さい、または等しい(<=)のような比較オペレータが含まれています.
二つの値が等しいかどうかを比較するには、「等しい」を使ってオペレータを比較することができます.この操作符は2つの等号から構成されています.単一の等号(=)は、割当動作を完了するために使用されます.条件文の条件の中で単一の等号を使ったら、それに応じたコピーが成功すれば、その条件の求値結果はtrueになります.
以下は「等しい」比較を誤って行う例である.

var my_mood = "happy";
var your_mood = "sad";
if(my_mood = your_mood) {
    alert("We both feel the same.")
}
上の文の誤りは、変数をyour_ということです.moodに変数my(u)を割り当てます.moodではなく、それらが等しいかどうかを比較しています.この割り当ては成功するはずですから、この条件文の結果は永遠にtrueです.
以下は「イコール」の比較を行う正しいやり方です.

var my_mood = "happy";
var your_mood = "sad";
if(my_mood == your_mood) {
    alert("We both feel the same.")
}
今回、条件文の結果はfalseです.
JavaScriptはまた、感嘆符と1つの等号から構成される「等しくない」比較用のオペレータを提供しています.
if(my_mood != your_mood) {
    alert("We're feeling different moods.")
}
同じ操作子==厳密に等しいという意味ではないので、迷うことが多いです.例えば、falseと空の文字列を比較すると上記の結果が得られますか?
var a = false;
var b = "";
if(a == b) {
    alert("a equals b");
}
この条件文の評価結果はtrueです.これはイコール演算子==空の文字とfalseの意味が同じだと思います.厳密に比較するには、別の等号(==)を使います.この全等のオペレータは厳しい比較を行い、値だけでなく変数の種類を比較します.
var a = false;
var b = "";
if(a === b) {
    alert("a equals b");
}
今回の条件式の求めはfalseです.falseは空の文字列と同じ意味を持つと考えられても、Booleanブール値およびString文字列はタイプではない.
操作を待たずに!このように、比較的に厳格で同じではありませんて、使います!
論理演算子
JavaScriptは条件文の中の操作を組み合わせることができます.例えば、ある変数をチェックするなら、この変数の名前がnumであると仮定して、その値は5~10の間であるかどうか、2回の比較操作が必要です.まず、この変数が5以上であるかどうかを比較し、この変数が10以下であるかを比較します.この2つの比較動作を論理比較といいます.以下はこの二つのロジックを組み合わせた具体的なやり方です.
if ( num >= 5 && num <= 10 ) {
    alert("The number is in the right range.")
}
ここでは「論理と」操作子を使っています.二つの「&」の文字から構成されています.論理演算子です.
論理演算子の操作対象はブール値です.各論理演算数は、ブール値trueまたはfalseを返します.「論理と」操作は両方の操作数がtrueである時だけがtrueです.
「論理または」操作子は、2つの垂直線文字から構成されています.操作数の一つがtrueである限り、「論理または」の操作はtrueとなります.両方の操作数がtrueであれば、「論理または」操作もtrueとなります.二つの動作数がfalseである場合にのみ、「論理または」動作はfalseである.
if ( num > 10 || num < 5 ) {
    alert("The number is not in the right range")
}
JavaScriptはまた、感嘆符(!)で構成された「論理非」オペレータを提供しています.「論理非」オペレータは単一の論理演算数にしか作用しません.その結果、その論理演算数が返されたブール値を逆にします.もしその論理操作数が戻ってくるブール値がtrueであれば、「論理非」オペレータはそれをfalseに取ります.
if ( !(1 > 2) ) {
    alert("All is well with the world");
}
曖昧さを避けるために、上の文は論理操作数を括弧に入れて、「論理非」オペレータを括弧内のすべての内容に作用させます.
条件文全体の結果を「論理非」操作子で反転させることができます.以下の例では、特に一対の括弧を使用して、「論理非」オペレータが2つの論理演算数の組み合わせの結果に作用することを確認する.
if ( !(num > 10 || num < 5) ) {
    alert("The number is in the right range.")
}