JavaScript文法によくある落とし穴
2570 ワード
経験豊富なWeb開発者であっても、ちょっとした問題で何時間も考え込んでしまう可能性があります.
次は9種類のよくある落とし穴を見ます.
1.大文字と小文字を区別する
作成したすべての関数と変数は、大文字と小文字を区別します.
つまり、function myFunction(){}とfunction MyFunction()は違います.
2.単引用符と二重引用符
シングルクォーテーションマーク(「文字列」)とダブルクォーテーションマーク(「文字列」)は、JavaScriptには特に区別がなく、文字列を作成するために使用されます.しかし、一般的な原則として、ほとんどのWeb開発者は単引用符を使用しています.
3.改行
どの引用符を使って文字列を作成しても、文字列の中に強制的な改行記号が含まれていません.
4.任意のセミコロンとかっこ
行のコードをセミコロンで終了する必要はありません.
JavaScriptは重載をサポートしていません.ここではより多くの代替となります.
再負荷の場合、以下の2つの同名関数があると仮定します.
6.関数の呼び出しと参照(括弧なし)
「AdviancED DOM Scripting Dynamic Web Design Techniques」
次は9種類のよくある落とし穴を見ます.
1.大文字と小文字を区別する
作成したすべての関数と変数は、大文字と小文字を区別します.
つまり、function myFunction(){}とfunction MyFunction()は違います.
2.単引用符と二重引用符
シングルクォーテーションマーク(「文字列」)とダブルクォーテーションマーク(「文字列」)は、JavaScriptには特に区別がなく、文字列を作成するために使用されます.しかし、一般的な原則として、ほとんどのWeb開発者は単引用符を使用しています.
3.改行
どの引用符を使って文字列を作成しても、文字列の中に強制的な改行記号が含まれていません.
var html = ‘<h2 class=”a”>A list!</h2>
<ol>
<li class = “a”>Foo</li>
<li class = “a”>Bar</li>
</ol>’;
このようにすると、解析エラーが発生します.改行はセミコロンと解釈されていますので、ブラウザに対して完全なファイルとして伝えたい場合は、バックスラッシュで改行を行います.var html = ‘<h2 class=”a”>A list!</h2>\
<ol>\
<li class = “a”>Foo</li>\
<li class = “a”>Bar</li>\
</ol>’;
第三者の圧縮ツールを使ってコードを圧縮すると、上のような方法も問題が発生します.文字列操作符(+)を使って、各行を引用符で囲むもう一つの案があります.var html = ‘<h2 class=”a”>A list!</h2>\
+ ‘<ol>’
+’<li class = “a”>Foo</li>’
+’<li class = “a”>Bar</li>’
+’</ol>
’4.任意のセミコロンとかっこ
行のコードをセミコロンで終了する必要はありません.
alert(‘hello’)
alert(‘world’)
に等しいalert(‘hello’);
alert(‘world’);
しかし、論理関係があると、このように同じとは言えません.if(a==b)
alert(‘true!’)
alert(‘false?’)
違いますif(a==b) {
alert(‘true!’);
}
alert(‘false?’);
5.重積載(本物の重積載ではない)JavaScriptは重載をサポートしていません.ここではより多くの代替となります.
再負荷の場合、以下の2つの同名関数があると仮定します.
function myFunction(a,b) { alert(a+b);}
function myFunction(a) {alert(a);}
プログラムではパラメータによって異なる関数を呼び出して処理しますが、これはJavaScriptでは実現できます.JavaScriptについては、関数定義を考慮しないパラメータです.直接にスコープで最後に定義されたその関数を使用します.つまり同じ関数は常にインスタンスiだけが存在します.だから、あなたが自分の関数を作成する時、JavaScriptのコア要素をカバーしていないことを確認します.そうしたいなら、下記の関数を作成しました.function alert(message) {
//LEO.$ JS
LEO.$(‘messageBox’).appendChild(document.createTextNode(message));
}
alertを呼び出すと、ブラウザはいつものように情報を提示するのではなく、私が新しく定義したalert関数に従ってその動作を実行します.6.関数の呼び出しと参照(括弧なし)
var fun1 = exampleFunction();
var fun2 = exampleFunction;
上記の違いを発見しましたか?違いはfun 2のexampleFunctionには丸括弧がありません.結果に大きな影響を与えます.丸括弧がないと、fun 2は関数そのものを得ます.結果ではなく、fun 2をパラメータとして他の方法に伝えます.「AdviancED DOM Scripting Dynamic Web Design Techniques」