誤って分析するJavaScriptの9つの落とし穴と評点


Nineから来ました Javascript Gotch as、 以下はJavaScriptの間違いやすい9つの落とし穴です。高度な技術問題ではないですが、気をつけてください。あなたのプログラミングを楽にします。いわゆるメークです。 life ease. いくつかの落とし穴に対しては、いくつかのポイントが混ざっています。1、最後のコンマはこのコードのように最後のコンマに注意してください。言語学的にはいいはずです。IEは文法のエラーを報告しますが、言葉は不明です。人の目で数千行のコードからスキャンするしかありません。script>var theObj={city:「Boston」、state:「MA」、}[Ctrl+A全オプション:]2、thisの引用はこのコードのように変化します。this.C.lickHandler=function(){alert}Dcument.getElemenntById(the Text).onclick=MyObject.ClickHandler[Ctrl+A全選注:]はあなたの望むほどではなく、答えは"JavaScript"ではありません。 rulesMyObject.lickHandlerを実行するとき、コードの中で赤い行が、thisの引用は実際にdocument.getElementById(「theText」)の参照を指しています。このように解決できます。var MyObject=function(){var self=this;this.alertMessage=「Javascript rules」this.OnClick=function(){alert}Dcument.getElementById(「the Text」).onclick=MyObject.OnClipt[Ctrl+A全選択注:]実質的に、これはJavaScriptの役割領域の問題です。もしあなたが見たら、解決策は一つだけではないことが分かります。3、表示泥棒はJavaScriptの中でHTMLのidと同じ変数名を使わないでください。以下のコード:The Button=get(「The Button」)[Ctrl+Aフル注:]IEは、オブジェクトが定義されていないエラーを報告します。IEとしか言えません sucks.4.文字列を置き換えると、最初のマッチコードだけが次のようになります。script>[Ctrl+A全選注:]実際、結果は"This_"です。is a. title". JavaScriptでは、String.replaceの最初のパラメータは正規表現であるべきです。だから、正しいやり方はこうです。 fileName = "This is a. title".replace(/ /g,_);5、mouseoutは時にはmouseinを意味していますが、これはイベントの泡が発生したためです。IEにはmouseenterとmouseleaveがありますが、標準ではありません。著者はここで、YUIなどのライブラリを使って問題を解決することを提案します。6、PArseIntは進制システムに基づいているのが常識ですが、多くの人がパーパーイントを無視した後、まだ二つ目のパラメータがあります。指定進数を使います。たとえば、パースInt(「09」)は、答えが9だと思ったら、間違っています。ここでは、文字列が0で始まると、ParseIntは8進数で処理され、8進数では09は違法であり、falseに戻り、論理値falseは0に変換される。 したがって、正しいやり方はパーパーネット(「09」)であり、 10)  7、for…in…すべてのものを遍歴するというコードがあります。var アール = [5,10,15]var talk = 1;for ( var x in arr) {    talk = talk * arr[x];よく運行していますよね。しかし、ある日それはやめました。返してくれた値はNaNになりました。 目まいがする私はただ倉庫を導入しただけです。このライブラリはArayのprototypeを書き換えました。このように、私達のarr平白は一つの属性を多く出しました。for…inはこれを遍歴します。だからこのようにするのが比較的に安全です:for ( var x = 0; x < arr.length x++) {    talk = talk * arr[x];実は、これも汚染の基本的な種類のprototypeが危害をもたらすことができる1つの例証です。8、イベントプロセッサの罠これは、オブジェクト属性としてのイベントプロセッサを使用してのみ存在する問題です。例えばwindow.onclick = MyOnClickMethodのようなコードは、前のWindows.onclickイベントを複写し、IEのコンテンツ流出を引き起こす可能性があります。 アゲイン。IEではまだDOMをサポートしていません。 2のイベントを登録する前に、著者はライブラリを使って問題を解決することを提案しています。例えば、YUI:YAHOO.util.Event.addListener(window)を使って、 "click" MyOnClickMethodこれも常識の問題ですが、初心者はミスをしやすいかもしれません。9、Focus Pocusは新しいinputテキスト要素を作って、それを上にフォーカスします。このようなコードは自然です。var newInput = document.creat Element("input")Dcument.body.apendChild(newInput);newInput.focus()newInput.select();しかし、IEはエラーを報告します。 アゲイン and アゲイン。理由は、あなたがfocus()を実行する時、要素がまだ存在しないからかもしれません。したがって、私たちは実行を遅延することができます:var newInput = document.creat Element("input")newInput.id = "The NewInput";Dcument.body.apendChild(newInput);setTimeout(function(){ //ここではクローズドを使って書き換えましたが、興味があれば原文と比較してみてください。 Dcument.getElemenntById('The NewInput').focus() Dcument.getElemenntById('The NewInput').select(),} 10)実践の中で、JavaScriptの落とし穴はまだたくさんあって、大部分が解像器の実現が場所に合わないため引き起こします。これらのものは教科書にはほとんど登場しません。開発者同士の経験でしか共有できません。ありがとうございます。私たちはネット時代に住んでいます。いろいろな問題があります。Googleで答えを見つけることができます。