45 JavaScriptプログラミングの注意点とスキル_JavaScriptスキル
JavaScript は世界で最も人気のあるプログラミング言語であり、Web 開発、モバイル アプリケーション開発 (PhoneGap、Appcelerator)、サーバーサイド開発 (Node.js および Wakanda) などに使用できます。 JavaScript は、多くの初心者がプログラミングの世界に入る最初の言語でもあります。これを使用して、ブラウザに単純なプロンプト ボックスを表示したり、nodebot または nodruino を通じてロボットを制御したりできます。明確な構造と高いパフォーマンスを備えた JavaScript コードを作成できる開発者は、現在、採用市場で最も求められている人材です。
この記事では、いくつかの例外を除いて、ブラウザの JavaScript エンジンとサーバー側の JavaScript インタプリタの両方に適用される JavaScript のヒント、秘密、ベスト プラクティスをいくつか紹介します。
この記事のサンプル コードは、Google Chrome 30 (V8 3.20.17.15) の最新バージョンでのテストに合格しました。
1. 初めて変数に値を割り当てるときは、必ず var キーワードを使用してください
変数が宣言されずに直接割り当てられた場合、その変数はデフォルトで新しいグローバル変数として使用されます。グローバル変数の使用は避けてください。
2. ==
の代わりに === を使用します。== 演算子と != 演算子は、必要に応じてデータ型を自動的に変換します。しかし、=== と !== はそうではなく、値とデータ型を同時に比較するため、== や != よりも高速になります。
[10] === 10 // は false
[10] == 10 // は true
'10' == 10 // は true
'10' === 10 // は false
[] == 0 // は true
[] === 0 // は false
'' == false // は true ですが、true == "a" は false
'' === false // は false
3. アンダーファイン、null、0、false、NaN、および空の文字列の論理結果はすべて false です
4. 行末にセミコロン を使用します
実際には、セミコロンを使用するのが最善です。セミコロンを書き忘れても、ほとんどの場合、JavaScript インタプリタが自動的に追加します。セミコロンが使用される理由の詳細については、「JavaScript におけるセミコロンの真実」の記事を参照してください。
5. オブジェクトコンストラクターを使用します
関数 人(名, 姓){
This.firstName = firstName;
This.lastName = lastName;
}
var Saad = 新しい人("Saad", "Mousliki");
6. typeof、instanceof、コンストラクターは慎重に使用してください
typeof: 変数の元の型を文字列形式で返すために使用される JavaScript 単項演算子。typeof null もオブジェクトを返すことに注意してください (配列 Array、時刻 Date など)。オブジェクト
コンストラクター: 内部プロトタイプ プロパティ。コード
を通じてオーバーライドできます。 instanceof: JavaScript 演算子。プロトタイプ チェーンのコンストラクター内を検索し、見つかった場合は true を返し、それ以外の場合は false を返します
var arr = ["a", "b", "c"];
typeof arr; // 「オブジェクト」を返します
arr 配列のインスタンス // true
arr.constructor(); //[]
7. 自己呼び出し関数を使用する
関数は作成直後に自動的に実行され、通常は自己呼び出し匿名関数 (Self-Invoked Anonymous Function) または直接呼び出される関数式 (Immediately Invoked Function Expression) と呼ばれます。形式は次のとおりです:
(関数(){
//ここに配置されたコードは自動的に実行されます
})();
(関数(a,b){
var result = a b;
結果を返します;
})(10,20)
8. 配列からメンバーをランダムに取得します
var items = [12, 548, 'a', 2, 5478, 'foo', 8852, , 'Doe', 2145, 119];
var randomItem = items[Math.floor(Math.random() * items.length)];
9. 指定した範囲内の乱数を取得します
この関数は、指定された範囲内の給与など、テスト用の偽のデータを生成する場合に特に役立ちます。
var x = Math.floor(Math.random() * (最大値 - 最小値 1)) 分;
10. 0 から指定された値までのデジタル配列を生成します
var 数値配列 = [] 、最大 = 100;
for( var i=1;numberArray.push(i )
11. ランダムな英数字文字列を生成します
functiongenerateRandomAlphaNum(len) {
var rdmString = "";
for( ; rdmString.length 戻り値 rdmString.substr(0, len);
12. 数値配列の順序を乱す
変数番号 = [5, 458, 120, -215, 228, 400, 122205, -85411];
数値 = 数値.sort(関数(){ return Math.random() - 0.5});
/* 数値配列は [120, 5, 228, -215, 400, 458, -85411, 122205] のようになります */
ここでは、JavaScript の組み込み配列ソート関数が使用されています。より良い方法は、特殊なコードを使用して実装することです (Fisher-Yates アルゴリズムなど)。このディスカッションは StackOverFlow で参照できます。
13. 文字列からスペースを削除します
Java、C#、PHP およびその他の言語はすべて特別な文字列スペース削除関数を実装していますが、JavaScript にはそのような関数はありません。次のコードを使用して String オブジェクトのトリム関数を機能させることができます。
14. 配列間に追加
var array2 = ["Doe" , 555 , 100];
Array.prototype.push.apply(array1, array2);
/* array1 の値は [12, "foo", {name "Joe"}, -2458, "Doe", 555, 100] */
15. オブジェクトを配列に変換します
16. 数字かどうかを確認します
戻り値 !isNaN(parseFloat(n)) && isFinite(n);
}
17. 配列であるかどうかを確認します
戻り値 Object.prototype.toString.call(obj) === '[オブジェクト配列]' ;
}
ブラウザでフレームを使用しない場合は、instanceof を使用することもできますが、コンテキストが複雑すぎる場合はエラーが発生する可能性があります。
var myFrame = document.createElement('iframe');
document.body.appendChild(myFrame);
var myArray = window.frames[window.frames.length-1].Array;
var arr = new myArray(a,b,10) // [a,b,10]
; // myArray のコンストラクターが失われ、instanceof の結果が異常になります
// コンストラクターはフレーム間で共有できません
arr 配列のインスタンス; // false
18. 配列内の最大値と最小値を取得します
変数番号 = [5, 458, 120, -215, 228, 400, 122205, -85411]; var maxInNumbers = Math.max.apply(数学, 数値); var minInNumbers = Math.min.apply(数学, 数値);
20. 配列から要素を直接削除または削除しないでください。
配列要素に対して delete を直接使用すると、要素は削除されませんが、要素は未定義に設定されます。配列要素の削除にはスプライスを使用する必要があります。
してはいけないこと:
/* 項目の結果は [12, 548, "a", 未定義 × 1, 5478, "foo", 8852, 未定義 × 1, "Doe", 2154, 119] */
代わりに:
コードをコピー
delete は、オブジェクトのプロパティを削除するときに使用できます。
21. length 属性を使用して配列
前の例では、長さ属性を使用して配列をクリアしました。 は、配列を切り詰めるためにも使用できます。
コードをコピー
コードをコピー
コードは次のとおりです:
コードをコピーします
コードは次のとおりです:
コードをコピー
function doSomething(arg1){
arg1 = arg1 || 10; // arg1 がまだ設定されていない場合、デフォルト値は 10 になります
}
23.map() 関数メソッドをデータに対してループさせます
var squares = [1,2,3,4].map(function (val) {
戻り値 val * val; });
// 正方形は [1, 4, 9, 16]
に等しくなります
24. 指定された小数点以下の桁数を維持します
num = num.toFixed(4) // num は 2.4432
に等しくなります。
25. 浮動小数点計算の問題
9007199254740992 1 // は 9007199254740992
に等しい 9007199254740992 2 // は 9007199254740994
に等しい
この問題は、toFixed() と toPrecision() を使用することで解決できます。
26. for-in ループでオブジェクトのプロパティを確認します
次の使用法では、反復中にオブジェクトのプロトタイプ プロパティを入力できなくなる可能性があります。
If (object.hasOwnProperty(name)) {
// name で何かを実行します
}
}
27. カンマ演算子
console.log(b); // b は 99
に等しい
28. 計算やクエリに使用する変数を一時的に保存します
jQuery セレクターでは、DOM 要素全体を一時的に保存できます。
29. isFinite()に渡すパラメータを事前に確認してください
コードをコピーします
isFinite(null); // true、これには特別な注意を払う必要があります
30. 配列内のインデックスとして負の数値を使用しないでください
コードをコピーします
31. JSON を使用してシリアル化および逆シリアル化します
コードをコピー
var person = {名前:'サード'、年齢:26、所属:{ID:15、名前:「研究開発」} };
var stringFromPerson = JSON.stringify(person);
/* stringFromPerson の結果は "{"name":"Saad","age":26,"Department":{"ID":15,"name":"R&D"}}" */
var personFromString = JSON.parse(stringFromperson);
/* personFromString の値は person オブジェクトと同じです */
32. eval() や関数コンストラクターを使用しないでください
eval() と関数コンストラクター (Function constructor) は、呼び出されるたびに、ソース コードを実行可能コードに変換する必要があり、比較的高価です。
var func1 = 新しい関数(関数コード);
var func2 = eval(functionCode);
33. with() の使用を避ける
with()を使用するとグローバルスコープに変数を追加できるため、同じ名前の変数が存在すると混同しやすく、値が上書きされてしまいます。
34. 配列では for-in を使用しないでください
避けてください:
変数合計 = 0; for (arrayNumbers の var i) {
合計 = 配列番号[i]
}
合計 = 配列番号[i]
}
もう 1 つの利点は、2 つの変数 i と len が for ループの最初のステートメントにあり、初期化されるのは 1 回だけであり、次の書き方よりも高速であることです。
35. setInterval() および setTimeout() に渡すときは、文字列の代わりに関数を使用します
文字列を setTimeout() と setInterval() に渡す場合、それらは eval と同様の方法で変換されますが、確実に速度が低下するため、使用しないでください:
代わりに次を使用してください:
コードをコピー
36. if/else の大きなスタックの代わりに switch/case を使用する
37. スイッチ/ケースで数値間隔を使用する
実際、switch/case のケース条件は次のように書くこともできます:
コードをコピー
function getCategory(age) {
var カテゴリ = ""; スイッチ (真) {
case isNaN(年齢):
カテゴリ = "年齢ではありません"
休憩
ケース (年齢 >= 50):
カテゴリ = "古い"
休憩
ケース (年齢 <= 20):
カテゴリ = "赤ちゃん"
休憩
デフォルト: カテゴリ = "若者"
休憩
};
カテゴリを返す
}
getCategory(5); // 「Baby」を返します
このようにして、オブジェクトをパラメータとして指定して、このプロトタイプに基づいて新しいオブジェクトを作成できます。
}
clone(Array).prototype; // []
39.HTMLフィールド変換関数
コードをコピーします
}
40. ループ内で try-catch-finally を使用しないでください
してはいけないこと:
コードをコピー
catch (e) {
// 例外を処理します
}
}
代わりに:
コードをコピー
}
キャッチ (e) {
// 例外を処理します
}
41. XMLHttpRequests を使用する場合はタイムアウトの設定に注意してください
コードをコピー
var xhr = 新しい XMLHttpRequest (); xhr.onreadystatechange = function () {
If (this.readyState == 4) {
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, // レスポンスデータを使って何かを行う
}
}
var timeout = setTimeout( function () {
xhr.abort(); // エラーコールバックを呼び出します
}, 60*1000 /* 1 分後にタイムアウト */ ); xhr.open('GET', URL, true); xhr.send();
同時に、複数の XMLHttpRequests リクエストを同時に開始しないことに注意してください。
通常、WebSocket 接続の作成後、30 秒以内にアクティビティがない場合、サーバーは接続をタイムアウトします。単位期間内にアクティビティがない場合、ファイアウォールは接続をタイムアウトにすることもできます。 これを防ぐために、一定の間隔で空のメッセージをサーバーに送信できます。この要件は、次の 2 つの機能によって実現できます。1 つは接続をアクティブに維持するために使用され、もう 1 つは特にこの状態を終了するために使用されます。
コードをコピー
timerId = setTimeout(keepAlive, タイムアウト); }
function cancelKeepAlive() {
If (timerId) {
cancelTimeout(timerId); }
}
keepAlive() 関数は WebSocket 接続の onOpen() メソッドの最後に配置でき、cancelKeepAlive() は onClose() メソッドの最後に配置できます。
43. プリミティブ演算子は関数呼び出しよりも高速であることに注意してください。VanillaJS
を使用してください。
たとえば、通常はこれを行わないでください:
コードをコピー
コードは次のとおりです:
コードをコピー
JSLint や JSMin などのツールを使用して、コードを検査および縮小できます。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











正規表現を使用して PHP 配列から重複値を削除する方法: 正規表現 /(.*)(.+)/i を使用して、重複値を照合して置換します。配列要素を反復処理し、preg_match を使用して一致をチェックします。一致する場合は値をスキップし、一致しない場合は重複値のない新しい配列に追加します。

1. プログラミングは、Web サイト、モバイル アプリケーション、ゲーム、データ分析ツールなど、さまざまなソフトウェアやアプリケーションの開発に使用できます。その応用分野は非常に幅広く、科学研究、医療、金融、教育、エンターテイメントなど、ほぼすべての業界をカバーしています。 2. プログラミングを学ぶことは、問題解決スキルと論理的思考スキルを向上させるのに役立ちます。プログラミング中、問題を分析して理解し、解決策を見つけてコードに変換する必要があります。この考え方は、分析能力と抽象能力を養い、実際的な問題を解決する能力を向上させることができます。

C++ ラムダ式を使用する場合は注意してください。誤って変更されないよう変数を慎重にキャプチャしてください。変数は参照または値によってキャプチャでき、参照キャプチャは外部変数を変更するために使用されます。ラムダ式のライフサイクルはそれをキャプチャする関数とは異なるため、メモリ リークが発生する可能性があります。パフォーマンスを最適化するには、関数ポインターまたは関数オブジェクトの使用を検討してください。

Python は、学習の容易さと強力な機能により、初心者にとって理想的なプログラミング入門言語です。その基本は次のとおりです。 変数: データ (数値、文字列、リストなど) を保存するために使用されます。データ型: 変数内のデータの型 (整数、浮動小数点など) を定義します。演算子: 数学的な演算と比較に使用されます。制御フロー: コード実行のフロー (条件文、ループ) を制御します。

Python は、問題解決の初心者に力を与えます。ユーザーフレンドリーな構文、広範なライブラリ、変数、条件文、ループによる効率的なコード開発などの機能を備えています。データの管理からプログラム フローの制御、反復的なタスクの実行まで、Python が提供します

C++ プログラミング パズルは、フィボナッチ数列、階乗、ハミング距離、配列の最大値と最小値などのアルゴリズムとデータ構造の概念をカバーします。これらのパズルを解くことで、C++ の知識を強化し、アルゴリズムの理解とプログラミング スキルを向上させることができます。

ランク付けプレイに飽きていませんか?それならボール遊びに来てね!暗黙のうちに協力するチームメイトは、対戦相手に驚きの味を与えることができます。刻々と変化する戦場で、スキルを駆使して一手で状況を打開できるか試してみよう! 「エターナル トリビュレーション」では、4月11日のアップデートで新たなチーム対決モードが登場しました。熱血格闘ボールアクティビティ「エターナル トリビュレーション」の紹介です。永遠の熱血闘球の遊び方概要: 様々な手段を使って闘球を跳ね返し、敵を倒します。人数: 1列9人、3列6人 遊び方: ラウンド: 1. ゲームは複数のラウンドに分かれており、各ラウンドの開始時にフィールドの中央にDouqiuが誕生し、追いかけるプレイヤーをランダムに選択し、プレイヤーは様々な手段を使って攻撃しますボールを当てると格闘ボールがスピードアップし、格闘ボールが当たるとスタミナが減ります。 2. 1 列の各人はラウンドごとに体力 1 ポイントを持ち、3 列の各人はラウンドごとに体力 1 ポイントを持ちます。

C は、初心者がシステム プログラミングを学習するのに最適な選択肢です。ヘッダー ファイル、関数、メイン関数のコンポーネントが含まれています。 「HelloWorld」を印刷できる単純な C プログラムには、標準入出力関数宣言を含むヘッダー ファイルが必要で、main 関数で printf 関数を使用して印刷します。 C プログラムは、GCC コンパイラーを使用してコンパイルして実行できます。基本をマスターしたら、データ型、関数、配列、ファイル処理などのトピックに進み、熟練した C プログラマーになることができます。
