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

JavaScript 基礎トレーニング

JavaScript オブジェクト

JavaScript 関数

JS HTML DOM

JS ブラウザBOM

AJAX 基礎トレーニング

JavaScript 参考マニュアル

JavaScriptの一般的なエラー

JavaScriptは現在の業界で最も人気のあるプログラミング言語の1つです。この言語を学びたい場合は、以下のエラーを避ける必要があります。

予期せぬ代入演算子の使用

if文で無意識に代入演算子(=)ではなく比較演算子(==)を使用すると、JavaScriptプログラムが予期せぬ結果を生成する可能性があります。

numが20、このif文はfalseを返します:

var num = 0;
if (num == 20)
テストをしてみる‹/›

このif文はtrueを返します、なぜなら20がtrue:

var num = 0;
if (num = 20)
テストをしてみる‹/›

代入は常に代入された値を返します。

「==」を使って「===」を避ける

JavaScriptを使用し始めたとき、これは最も一般的なエラーです。

通常の比較では、データ型は無関係です。if文がtrueを返す場合:

var a = " 20;
var b = "20";
if (a == b)
テストをしてみる‹/›

厳格な比較では、データ型は実際に重要です。このif文はfalseを返します:

var a = " 20;
var b = "20";
if (a === b)
テストをしてみる‹/›

(a ==b)と(a ===b)の違いは:

  • == aがbに等しい場合、trueを返します

  • ===aがbに等しく、かつ同じ型に属する場合同一タイプ、則trueを返します

通常、常に===、または厳密に等しい演算子と呼ばれるものを使用するべきです。

混乱する加法と結合

前の章からわかるように、+演算子は加法と結合に使用されます。

さらには、以下についてです数字

結合は、以下についてです文字列の

したがって、数値を数値として追加することと、数値を文字列として追加することは異なる結果を生み出します:

var a = " 10;
var b = " 5;
var c = a + b; // c = " 15
var a = " 10;
var b = "5";
var c = a + b; // c = "105"
テストをしてみる‹/›

floatの誤用

JavaScriptのすべての数値は以下のように格納されます64ビット浮動小数点(Floats)。

すべてのプログラミング言語(JavaScriptを含む)は、正確な浮動小数点値に対して困難を感じます:

var a = 0.1;
var b = 0.2;
var c = a + b;   // cの結果は0ではありません。3
テストをしてみる‹/›

上記の問題を解決するために、乗算と除算が役立ちます:

var c = (a * 10 + b * 10) / 10; // c = 0.3
テストをしてみる‹/›

JavaScriptの文字列の改行

JavaScriptは、文を2行に分けることができます:

var str = "
"w3codebox Tutorial";
テストをしてみる‹/›

しかし、文字列の中間で文を中断すると効果がありません:

var str = "w3codebox
Tutorial";
テストをしてみる‹/›

文字列の中で文を中断する必要がある場合、必ず「反斜線」(エスケープシンボル)を使用する必要があります:

var str = "w3codebox \
Tutorial";
テストをしてみる‹/›

    もう一つの解決策は、以下を使用することですテンプレートリテラル(反引号``)文字列。これにより、長い文字列のエスケープが必要なくなります:

var str = `Air Pollution is introduction of chemicals to the
atmosphere. それは環境のバランスを損なって、引き起こします
several diseases.`;
テストをしてみる‹/›

セミコロンが位置が間違っている

セミコロンが配置が間違っているため、numの値に関わらず以下のコードが実行されます:

if (num === 45);
{
  // コードブロック  
}
テストをしてみる‹/›

カンマで終わる定義

オブジェクトと配列の定義の末尾のカンマはECMAScript 5中は合法です。

let fruits = ["Apple", "Mango", "Banana", "Orange",];//配列
let user = {firstName:"Vishal", lastName:"Choudhary", age:22,};//オブジェクト

しかし、配列の最後にカンマを追加すると、Internet Explorer 8クラッシュします。

JSONは、末尾のコンマを許可しません。

ブロックスコープ

JavaScriptは、各コードブロックに新しいスコープを作成しません。

これは多くのプログラミング言語で適用されますが、JavaScriptでは適用されません。

for (var i = 0; i < 10; i++) {
  // some code
}
document.write(i);   // この出力は何になるでしょう?
テストをしてみる‹/›

を使用してletキーワードは、各コードブロックに新しいスコープを作成します:

for (let i = 0; i < 10; i++) {
  // some code
}
document.write(i);   // この出力は何になるでしょう?
テストをしてみる‹/›

nullとundefinedの違い

undefined値は、変数に値が割り当てられていないか、変数が宣言されていないことを示します。

null値は、意図的に何もオブジェクト値がないことを示します。

これはオブジェクトが空かどうかをテストするのが少し難しくなります。

タイプがundefined、オブジェクトが存在するかどうかをテストするために:

if (typeof myObj === "undefined")
テストをしてみる‹/›

    しかし、オブジェクトがnull、なぜなら、オブジェクトがundefined、これはエラーを投げ出します:

if (myObj === null)
テストをしてみる‹/›

この問題を解決するには、オブジェクトがundefined、そしてnull

if (typeof myObj !== "undefined" && myObj !== null)
テストをしてみる‹/›