1。スクリプトを使用せずに自己閉鎖タグ
スクリプトで自己閉鎖タグを使用します。 XHTMLでは合法ですが、HTML仕様に準拠せず、一部のブラウザの正しい解析を取得することはできません。 Extを導入したときにこの方法を使用しました。これにより、スクリプトを正しく実行できなくなりました。
<script src="example.js"/> --> <script src="example.js"></script>
2。スクリプトを前に置きます</body>
スクリプトファイルを<head>に配置する場合、ページを表示する前にスクリプトをダウンロードして実行する必要があります。これにより、ユーザーの待機時間が増加します。スタイルシートを<head>に配置して、コンテンツが異常に表示されないようにします。一般的な方法は次のとおりです。
<!doctype html> <html lang = "en"> <head> <meta charset = "utf-8"> <title> document> document> <link rel = "styleSheet" type = "text/css" href = "themass"/> </head> <body> <! src = "embler.js"/> </body> </html>
3.関数内で厳密なモードを使用します
関数の外側で厳密なモードを使用すると、サードパーティのライブラリと同僚のコードが適切に機能しないことがあります。関数内では、独自のコードのみに影響し、他のコードのコードには影響しません。
function myfunction(){"strict"; //関数コード}4.ステートメントの最後にセミコロンを省略しないでください
コードの最後にセミコロンは、圧縮エラーを簡単に引き起こす可能性があります。さらに、場合によっては、コードのパフォーマンスを改善できます。通訳者は、セミコロンを挿入する場所を推測するのに時間を費やしてはなりません。もう1つのより一般的な問題は、セミコロンを自動的に挿入することで間違いを犯すことがあるため、セミコロンを省略することをお勧めしないことです。
5。VARを使用して変数を定義します
変数を定義するときにVARキーワードを使用し、すべてが関数の先頭に進みます。
これを行うことの利点は、無意識のうちにグローバル変数を作成し、コードを理解しやすくすることを防ぎます。
function myfunction(){var result = 10 + value; var値= 10; return result;}この関数の構文には問題はありませんが、それは非常に直感的ではなく、人間の論理に適合しません。次のように変更する方が良いでしょう。
funciton myfunction(){var result; var値;結果= 10 +値;値= 10;返品結果; }上記の2つのコードは同等であり、結果の価値はNANであることを説明させてください。 JavaScriptは、関数の開始まで関数のすべての変数宣言を宣伝します。コード1が実行されると、コード1がコード2になります。結果= 10 +値に実行されると、値の値は未定義であり、10がNANに追加され、値は10に割り当てられます。
グローバル変数によって引き起こされる問題について誰もが明確でなければなりません。そうしないと、名前空間の概念は表示されません。
6.最初に関数を宣言してから使用します
変数宣言と同様に、関数宣言もJavaScriptエンジンによって進められているため、コードでは、関数の宣言の前に関数の呼び出しが表示されます。注目に値するもう1つのことは、次のようなステートメントブロックに関数宣言が表示されないことです。
if(condition){function myfunction(){alert( "true"); }} else {function myfunction(){alert( "false"); }} myFunction();コードを実行すると、出力がブラウザに関連することがわかりました。 Chrome 51およびFirefox 46では、IE 10ではFalseでは出力されます。したがって、ステートメントブロックで機能を宣言しないようにしてください。
7.慎重にTypeofの以下のヌルを使用します
ヌルは特別な価値であり、私たちはしばしば未定義と混同されています。次のシナリオはnullを使用する必要があります。
次の状況では、ヌルを使用しないでください。
Nullを理解する最良の方法は、オブジェクトのプレースホルダーとして使用することです。 nullと未定義を混乱させることが多い理由は、Nullと未定義の両方が初期化されていない変数であると考えているためですが、未定義のみは、変数が初期化されていないことを意味し、nullはそれがオブジェクトとして初期化されることを意味します。次のコードを見てください。
var person; console.log(typeof person); //undefinedConsole.log(Typeof foo); // undefinedvar house = null; console.log(typeof house); //物体
したがって、typeofを使用して、変数が初期化されているかどうかを判断しないようにしてください。変数が存在しないか、変数が初期化されていないかどうかはわかりません。 Nullを返すことは、変数が正しく割り当てられているかどうかもわかりませんので、TypeOFを使用するように注意してください。
8。数字の種類に注意してください
JavaScript Integersが小数、Octal、および16進数のリテラル値をサポートしていることを誰もが知っていると思います。リテラル値の数値がOctalの範囲を超える場合、先行ゼロは無視され、その後の数値は小数として解析されます。
console.log(012); //10
console.lgo(082); // 82
Octalおよび16進数が小数に使用される場合、構文エラーが発生します。もう1つの点は、厳密なモードではオクタルリテラルが無効であるということです。誰もが浮動点計算エラーの問題を知っています。これは、IEEE754値に基づくすべての浮動小数点計算に当てはまるため、特定の浮動小数点値をテストしないでください。
数値タイプ、ナン(数ではない)には特別な値があります。これは、値が返されるべきであるが数値タイプではないことを示すために使用されます。 NANおよび値は、NAN自体を含めて等しくありません。 ISNAN()関数を使用してテストできます。
9。論理操作を使用した動的割り当て
あなたが好むもの
var person = {age:10} var条件; var myvar = condition && person; alert(myvar)条件がbooleanタイプのfalseに変換された場合、myvar =条件、真の場合、myvar =人。
var person = {age:10} var条件; var myvar =条件||人;アラート(myvar)条件がブールと真に変換される場合、myvar =条件、falseの場合、myvar =人。
10。withステートメントを使用しないでください
使用しない重要な理由は、厳密なモードで構文自体が声明を無効にすることです。これは、ECMAScript委員会が使用してはならないと確信していることも示しています。次の例を見てみましょう。
var book = {title: "maintable javascript"、著者: "nicholas C. zakas"}; var message = "book is"; with(book){message += title;メッセージ + = "by" +著者;}上記のコードの問題は、タイトルと著者が表示される場所を区別することが難しいことであり、本のメッセージやプロパティから対処するためにローカル変数を区別することも困難です。さらに、JavaScriptエンジンと圧縮ツールはこのコードを最適化できないため、コードの正しい意味を推測することはできません。
さて、すでに10個のアイテムがあります。次の10個に会いましょう。