JSチュートリアル

JSホーム JSの紹介 JSどこへ JS出力 JSステートメント JS構文 JSコメント JS変数 JS Let JSConst JSオペレーター JS算術 JS割り当て JSデータ型 JS関数 JSオブジェクト JSイベント JS文字列 JS文字列メソッド JS文字列検索 JS文字列テンプレート JS番号 JS番号メソッド JSアレイ JS配列メソッド JS配列ソート JSアレイの反復 JSアレイ定数 JSの日付 JSの日付形式 JS DateGetメソッド JS日付設定メソッド JS数学 JSランダム JSブール値 JSの比較 JS条件 JSスイッチ JSループFor JSループフォーイン JSループの JSループWhile JSブレイク JSIterables JSセット JSマップ JS Typeof JS型変換 JSビット単位 JS RegExp JSエラー JSスコープ JSホイスト JS厳密モード JSこのキーワード JSアロー関数 JSクラス JS JSON JSデバッグ JSスタイルガイド JSのベストプラクティス JSの間違い JSパフォーマンス JS予約語

JSバージョン

JSバージョン JS 2009(ES5) JS 2015(ES6) JS 2016 JS 2017 JS 2018 JS IE /エッジ JSの歴史

JSオブジェクト

オブジェクト定義 オブジェクトのプロパティ オブジェクトメソッド オブジェクト表示 オブジェクトアクセサー オブジェクトコンストラクター オブジェクトのプロトタイプ オブジェクト反復可能 オブジェクトセット オブジェクトマップ オブジェクトリファレンス

JS関数

関数の定義 関数パラメーター 関数の呼び出し 関数呼び出し 機能適用 関数クロージャ

JSクラス

クラスイントロ クラス継承 クラス静的

JS非同期

JSコールバック JS非同期 JSの約束 JS Async / Await

JS HTML DOM

DOMイントロ DOMメソッド DOMドキュメント DOM要素 DOM HTML DOMフォーム DOM CSS DOMアニメーション DOMイベント DOMイベントリスナー DOMナビゲーション DOMノード DOMコレクション DOMノードリスト

JSブラウザBOM

JSウィンドウ JS画面 JSロケーション JSの歴史 JSナビゲーター JSポップアップアラート JSタイミング JSクッキー

JS Web API

WebAPIイントロ WebフォームAPI Web履歴API WebストレージAPI WebワーカーAPI Web Fetch API Web Geolocation API

JS AJAX

AJAXイントロ AJAX XMLHttp AJAXリクエスト AJAX応答 AJAXXMLファイル AJAX PHP AJAX ASP AJAXデータベース AJAXアプリケーション AJAXの例

JS JSON

JSONイントロ JSON構文 JSONとXML JSONデータ型 JSON解析 JSON文字列化 JSONオブジェクト JSON配列 JSONサーバー JSON PHP JSON HTML JSON JSONP

JSとjQuery

jQueryセレクター jQuery HTML jQuery CSS jQuery DOM

JSグラフィックス

JSグラフィックス JSキャンバス JSPlotly JS Chart.js JSグーグルチャート JS D3.js

JSの例

JSの例 JS HTML DOM JSHTML入力 JSHTMLオブジェクト JSHTMLイベント JSブラウザ JSエディター JS演習 JSクイズ JS証明書

JSリファレンス

JavaScriptオブジェクト HTMLDOMオブジェクト


JavaScriptのパフォーマンス


JavaScriptコードを高速化する方法。


ループ内のアクティビティを減らす

ループはプログラミングでよく使用されます。

forステートメントを含むループ内の各ステートメントは、ループの反復ごとに実行されます。

ループの外側に配置できるステートメントまたは割り当てにより、ループの実行が速くなります。

悪い:

for (let i = 0; i < arr.length; i++) {

より良いコード:

let l = arr.length;
for (let i = 0; i < l; i++) {

不正なコードは、ループが繰り返されるたびに配列の長さプロパティにアクセスします。

より良いコードは、ループの外側の長さプロパティにアクセスし、ループの実行を高速化します。


DOMアクセスを減らす

HTML DOMへのアクセスは、他のJavaScriptステートメントと比較して非常に低速です。

DOM要素に複数回アクセスする場合は、1回アクセスして、ローカル変数として使用します。

const obj = document.getElementById("demo");
obj.innerHTML = "Hello";


DOMサイズを縮小する

HTMLDOMの要素数を少なくしてください。

これにより、特に小型のデバイスで、ページの読み込みが常に改善され、レンダリング(ページ表示)が高速化されます。

(getElementsByTagNameのような)DOMを検索しようとするたびに、より小さなDOMの恩恵を受けます。


不要な変数を避ける

値を保存する予定がない場合は、新しい変数を作成しないでください。

多くの場合、次のようなコードを置き換えることができます。

let fullName = firstName + " " + lastName;
document.getElementById("demo").innerHTML = fullName;

これとともに:

document.getElementById("demo").innerHTML = firstName + " " + lastName;

JavaScriptの読み込みを遅らせる

スクリプトをページ本文の下部に配置すると、ブラウザは最初にページをロードできます。

スクリプトのダウンロード中、ブラウザは他のダウンロードを開始しません。さらに、すべての解析およびレンダリングアクティビティがブロックされる可能性があります。

HTTP仕様では、ブラウザが3つ以上のコンポーネントを並行してダウンロードしてはならないことが定義されています。

defer="true"別の方法は、scriptタグで使用することです。defer属性は、ページの解析が終了した後にスクリプトを実行する必要があることを指定しますが、これは外部スクリプトに対してのみ機能します。

可能であれば、ページが読み込まれた後、コードでスクリプトをページに追加できます。

<script>
window.onload = function() {
  const element = document.createElement("script");
  element.src = "myScript.js";
  document.body.appendChild(element);
};
</script>

での使用は避けてください

withキーワードの使用は避けてください。速度に悪影響を及ぼします。また、JavaScriptスコープが乱雑になります。

withキーワードはstrictモードでは許可されていません。