English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
それぞれの人がJavaScriptを書く方法は異なりますが、多くの共通点があります。以下は、比較的シンプルなJavaScriptの書き方のガイドラインと注意点で、道を少し楽にしてくれます。
グローバル変数の使用を最小限に抑えてください。これは、すべてのデータ型、オブジェクト、機能を含みます。
グローバル変数や関数は他のスクリプトでオーバーライドされることがあります。したがって、ローカル変数を使用してください。
ローカル変数はlet、constおよびvarキーワード宣言をしないと、グローバル変数になります。
変数や定数を宣言する際には、letおよびconstキーワード、ではなくvar。
// 推奨: let myAge = 22; const myName = "oldtoolbag.com"; // 推奨されません: var myAge = 22; var myName = "oldtoolbag.com";
この方法には十分な理由があります。-たとえば、予期せぬ再割り当てによる問題を避け、可読性の向上に影響を与えることを避けます。
将所有声明放在每个脚本或函数的顶部是一种很好的编程做法。
下面提供更简洁的代码,并在代码开头提供一个查找所有变量的地方。
// 声明写在最前面 let firstName, lastName, price, discount, fullPrice; // 使用 firstName = "oldtoolbag.com"; lastName = "Choudhary"; price = 26.90; discount = 1.25; fullPrice = price * 100 / discount;
为了最大程度地提高可读性,我们使用扩展语法,将JS的每一行都换行。
// 推奨: function myFunc() { console.log("Parrot Tutorial"); } // 推奨されません: function myFunc() { console.log("Parrot Tutorial"); }
您应该在运算符和操作数,参数等之间使用空格:
// 这更具可读性 if(dayOfWeek === 7 && weather === "sunny") { /* Some code */ } // 可读性较差 if(dayOfWeek===7&&weather==="sunny"){ /* Some code */ }
始终将数字,字符串或布尔值视为原始值。不作为对象。
将这些类型声明为对象会降低执行速度,并产生意外结果。
var str1 = "New Delhi"; var str2 = new String("New Delhi"); document.write(str1 === str2); // 返回 false because str1 and str2 have different typesテストをしてみて‹/›
无法比较对象:
var str1 = new String("New Delhi"); var str2 = new String("New Delhi"); document.write(str1 == str2); // 返回false,因为str1和str2是不同的对象 document.write(str1 === str2); // 返回false,因为str1和str2是不同的对象テストをしてみて‹/›
使用{}代替new Object()
使用""代替new String()
使用0代替new Number()
使用false代替new Boolean()
使用[]代替new Array()
使用/()}}/代替new RegExp()
使用function (){}代替new Function()
let x1 = {}; let x2 = ""; let x3 = 0; let x4 = false; let x5 = []; let x6 = /()}}/; let x7 = function(){};テストをしてみて‹/›
JavaScriptは非厳密な型や動的言語です。JavaScriptの変数は特定の値の型と直接関連付けられておらず、すべての型の値に割り当て(再割り当て)できます。
var x = 20; // xは今やNumberです x =「oldtoolbag.com"; // xは今やStringです x = true; // xは今やBooleanですテストをしてみて‹/›
数学演算を行う際に、JavaScriptは数字を文字列に変換できます:
num = 50 + 10;// 返します 6「0」, typeof numはnumberです num = 50 + "10"; // 「」を返します5010」,typeof numはstringです num =「5「0」 + 10; // 「」を返します5010」,typeof numはstringです num =「5「0」 - 10; // 「」を返します4「0」, typeof numはnumberですテストをしてみて‹/›
注意してください、数字は意図せずにNaN(非数字):
num = 50 * "Parrot"; // 「NaN」を返します、typeof numはnumberですテストをしてみて‹/›
==演算子は常に変換前に比較します(型に合わせて)。
===は値と型の比較を強制します。
1 == "1"; // true 1 == true; // true 1 === "1"; // false 1 === true; // false
値を挿入するには、テンプレート定数(` `)。
// 推奨: let myName = 'oldtoolbag.com'; console.log(`Hi! I'm ${myName}!`); // 推奨されません: let myName = 'oldtoolbag.com'; console.log('Hi! I\'m' + myName + '!');
一般的なループを使用する場合、for、for...inまたはfor...ofループを正しく定義するために、letキーワード。
let fruits = ["Apple", "Mango", "Banana"]; // 推奨: for(let i of fruits) { console.log(i); } // 推奨されません: for(i of fruits) { console.log(i); }
また、覚えておいてください:
ループキーワードと左括弧の間にスペースが。
括弧と花括弧の間に一つのスペース。
関数名はlowerCamelCasingを使用し、適切な場所で簡潔で理解しやすい意味の名前を使用してください。
// 推奨: function sayHello() { alert('Hello!'); } // 推奨されません: function sayhello() { alert('Hello!'); }
switch常に default: で終わらせてください。必要だと思わない場合でも。
var day; switch (new Date().getDay()) { case 0: day = "Sunday"; break; case 1: day = "Monday"; break; case 2: day = "Tuesday"; break; case 3: day = "Wednesday"; break; case 4: day = "Thursday"; break; case 5: day = "Friday"; break; case 6: day = "Saturday"; break; default: day = "Undefined Day"; }テストをしてみて‹/›
プログラムの状態が未捕捉のエラーを投げ出した場合、それらは実行を停止し、例の実用性を低下させる可能性があります。
したがって、以下のように使用するべきです。try...catchエラーをキャッチするためのブロック。
try { console.log(results); } catch(e) { console.error(e); }