English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaScript 基礎チュートリアル

JavaScript オブジェクト

JavaScript 関数

JS HTML DOM

JS ブラウザBOM

AJAX 基礎チュートリアル

JavaScript 参考マニュアル

JavaScript 実践経験

それぞれの人がJavaScriptを書く方法は異なりますが、多くの共通点があります。以下は、比較的シンプルなJavaScriptの書き方のガイドラインと注意点で、道を少し楽にしてくれます。

グローバル変数を避けてください。

グローバル変数の使用を最小限に抑えてください。これは、すべてのデータ型、オブジェクト、機能を含みます。

グローバル変数や関数は他のスクリプトでオーバーライドされることがあります。したがって、ローカル変数を使用してください。

ローカル変数はletconstおよび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 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 + '!');

通用ループ

一般的なループを使用する場合、forfor...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をデフォルト値で終了する

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);
  }