ホームページ ウェブフロントエンド jsチュートリアル JS パフォーマンス最適化手法の例を共有する

JS パフォーマンス最適化手法の例を共有する

Mar 13, 2018 pm 03:58 PM
javascript 共有

  1. スクリプトはページ要素コードの後に​​配置する必要があります

    現在のJavaScriptコードが埋め込まれているか外部リンクファイルにあるかに関係なく、ページのダウンロードとレンダリングは停止し、スクリプトの実行が完了するまで待つ必要があります。 JavaScript の実行プロセスに時間がかかるほど、ブラウザがユーザー入力に応答するまでの待ち時間も長くなります。スクリプトのダウンロードおよび実行時にブラウザがブロックされる理由は、スクリプトによってページまたは JavaScript の名前空間が変更され、後続のページのコンテンツに影響を与える可能性があるためです。

  2. グローバル検索を避ける

        function search() {
            //当我要使用当前页面地址和主机域名
            alert(window.location.href + window.location.host);
        }
        //最好的方式是如下这样  先用一个简单变量保存起来
        function search() {
            var location = window.location;
            alert(location.href + location.host);
        }
    ログイン後にコピー
  3. 型変換

    般最好用”" + 1来将数字转换成字符串,虽然看起来比较丑一点,但事实上这个效率是最高的,性能上来说:
    ログイン後にコピー

("" +) > String() > .toString() > "

"
    var myVar = "3.14159",
    str = "" + myVar, //  to string  
    num=+myVar,       // to number
    i_int = ~ ~myVar,  //  to integer  
    f_float = 1 * myVar,  //  to float  
    b_bool = !!myVar,  /*  to boolean - any string with length 
                            and any number except 0 are true */
    array = [myVar];  //  to array
"
ログイン後にコピー
  1. Multiプルタイプ宣言

    JavaScript では、すべての変数を単一の var ステートメントを使用して宣言できます。これは、スクリプト全体の実行時間を短縮するために結合されたステートメントです。上記のコード形式も非常に標準化されており、簡単です。見てみると明らかです。

  2. createElement の代わりに template 要素を複製します

    多くの人は、必要に応じて JavaScript で document.write を使用することを好みます。 HTML を直接挿入するには、p または span を指定し、ページに独自の HTML コードを挿入するようにその innerHTML を設定するなどのコンテナ要素を見つけることができます。実際には、文字列を使用して HTML を直接記述します。 1: コードの有効性が保証できない、2: 文字列の操作効率が低いため、ドキュメント内に既製のテンプレート ノードがある場合は、cloneNode() メソッドを使用する必要があります。なぜなら、createElement() メソッドを使用した後、複数の要素の属性を設定するには、 cloneNode() を使用して属性設定の数を減らす必要があるためです。同様に、多数の要素を作成する必要がある場合は、最初にテンプレート ノードを準備する必要があります。

        var frag = document.createDocumentFragment();
        for (var i = 0; i < 1000; i++) {
            var el = document.createElement(&#39;p&#39;);
            el.innerHTML = i;
            frag.appendChild(el);
        }
        document.body.appendChild(frag);
        //替换为:
        var frag = document.createDocumentFragment();
        var pEl = document.getElementsByTagName(&#39;p&#39;)[0];
        for (var i = 0; i < 1000; i++) {
            var el = pEl.cloneNode(false);
            el.innerHTML = i;
            frag.appendChild(el);
        }
        document.body.appendChild(frag);
    ログイン後にコピー
  3. クロージャを使用するときは注意してください

    クロージャのケース

    document.getElementById(&#39;foo&#39;).onclick = function(ev) { };
    ログイン後にコピー
  4. ループ時に制御条件と制御変数を組み合わせます

    for ( var x = 0; x < 10; x++ ) {};
    ログイン後にコピー

    このループに何かを追加する前に、JavaScript が実行するいくつかの操作があることがわかります。エンジンは反復ごとに実行する必要があります: 1: x が存在するかどうかを確認する 2: x が 10 未満であるかどうかを確認する 3: x を 1 ずつ増やす

    改善

    var x = 9;
    do { } while( x-- );
    ログイン後にコピー
  5. null との比較を避ける

    JavaScript は弱く型付けされているため、自動型チェックは行わないので、null と比較するコードを見つけた場合は、次の手法で置き換えてみてください:

    1. 値が参照型である必要がある場合は、instanceof 演算子を使用してそのコンストラクターをチェックします。値が基本型である必要がある場合は、typeof を使用してその型を確認します 3. オブジェクトに特定のメソッド名を含める場合は、typeof 演算子を使用して、指定された名前のメソッドがオブジェクトに存在することを確認します

  6. オブジェクトの所有権を尊重する

    JavaScript はいつでも任意のオブジェクトを変更できるため、デフォルトの動作は予期しない方法でオーバーライドされる可能性があるため、オブジェクト、そのオブジェクト、またはそのメソッドの保守に責任がない場合は、次のことを行う必要があります。具体的には:

    1. インスタンスまたはプロトタイプに属性を追加しないでください。 2. インスタンスまたはプロトタイプにメソッドを追加しないでください。 3. 既存のメソッドを再定義しないでください。 4. 実装されているメソッドを繰り返し定義しないでください。自分が所有していないオブジェクトは絶対に変更しないでください。オブジェクトの新しい関数を作成するには、次の方法があります。 1. 必要な関数を含む新しいオブジェクトを作成し、それを使用して関連オブジェクトと対話します。カスタム型を作成し、変更が必要な型を継承して、カスタム型に関数を追加します

  7. リテラルを使用する

        var aTest = new Array(); //替换为
        var aTest = [];
        var aTest = new Object; //替换为
        var aTest = {};
        var reg = new RegExp(); //替换为
        var reg = /../;
        //如果要创建具有一些特性的一般对象,也可以使用字面量,如下:
        var oFruit = new O;
        oFruit.color = "red";
        oFruit.name = "apple";
        //前面的代码可用对象字面量来改写成这样:
        var oFruit = { color: "red", name: "apple" };
    ログイン後にコピー
  8. ネガティブ検出を短縮する

        if (oTest != &#39;#ff0000&#39;) {
            //do something
        }
        if (oTest != null) {
            //do something
        }
        if (oTest != false) {
            //do something
        }
        //虽然这些都正确,但用逻辑非操作符来操作也有同样的效果:
        if (!oTest) {
            //do something
        }
    ログイン後にコピー
  9. JavaScriptオブジェクトを解放する

    随着实例化对象数量的增加,内存消耗会越来越大。所以应当及时释放对对象的引用,让GC能够回收这些内存控件。 对象:obj = null 对象属性:delete obj.myproperty 数组item:使用数组的splice方法释放数组中不用的item

  10. 巧用||和&&布尔运算符

        function eventHandler(e) {
            if (!e) e = window.event;
        }
        //可以替换为:
        function eventHandler(e) {
            e = e || window.event;
        }
        
        
        
        if (myobj) {
            doSomething(myobj);
        }
        //可以替换为:
        myobj && doSomething(myobj);
    ログイン後にコピー
  11. switch语句相对if较快

  12. 每条语句末尾须加分号

相关推荐:

js性能优化技巧_javascript技巧

以上がJS パフォーマンス最適化手法の例を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Quark NetdiskをBaidu Netdiskに共有するにはどうすればよいですか? Quark NetdiskをBaidu Netdiskに共有するにはどうすればよいですか? Mar 14, 2024 pm 04:40 PM

Quark Netdisk と Baidu Netdisk は非常に便利なストレージ ツールですが、多くのユーザーはこれら 2 つのソフトウェアが相互運用可能かどうかを疑問に思っています。 Quark NetdiskをBaidu Netdiskに共有するにはどうすればよいですか?このサイトでは、QuarkネットワークディスクファイルをBaiduネットワークディスクに保存する方法をユーザーに詳しく紹介します。 Quark Network Disk から Baidu Network Disk にファイルを保存する方法 方法 1. Quark Network Disk から Baidu Network Disk にファイルを転送する方法を知りたい場合は、まず Quark Network Disk に保存する必要があるファイルをダウンロードして、次に開きますBaidu Network Disk クライアントを起動し、圧縮ファイルを保存するフォルダーを選択し、ダブルクリックしてフォルダーを開きます。 2. フォルダーを開いたら、ウィンドウ左上の「アップロード」をクリックします。 3. コンピュータ上でアップロードする必要がある圧縮ファイルを見つけ、クリックして選択します。

NetEase Cloud Music を WeChat Moments に共有する方法_NetEase Cloud Music を WeChat Moments に共有するチュートリアル NetEase Cloud Music を WeChat Moments に共有する方法_NetEase Cloud Music を WeChat Moments に共有するチュートリアル Mar 25, 2024 am 11:41 AM

1. まず、NetEase Cloud Music に入り、ソフトウェアのホームページ インターフェイスをクリックして、曲の再生インターフェイスに入ります。 2. 次に、曲の再生インターフェイスで、下の図の赤いボックスに示すように、右上隅にある共有機能ボタンを見つけて、クリックして共有チャンネルを選択し、共有チャンネルで「共有先」オプションをクリックします。下部にある [WeChat Moments] を選択すると、コンテンツを WeChat Moments に共有できます。

Baidu Netdisk で友達とファイルを共有する方法 Baidu Netdisk で友達とファイルを共有する方法 Mar 25, 2024 pm 06:52 PM

最近、Baidu Netdisk Android クライアントの新しいバージョン 8.0.0 がリリースされ、このバージョンには多くの変更が加えられただけでなく、多くの実用的な機能も追加されました。その中でも最も目を引くのがフォルダー共有機能の強化だ。ユーザーは簡単に友人を招待して仕事や生活で重要なファイルを共有できるようになり、より便利なコラボレーションと共有が実現します。では、友達と共有する必要があるファイルをどのように共有すればよいでしょうか? 以下では、このサイトの編集者が詳しく説明します。 1) Baidu Cloud APP を開き、まずホームページ上の関連フォルダーをクリックして選択し、次にインターフェイスの右上隅にある [...] アイコンをクリックします (以下を参照) 2) 次に、[+] をクリックします。 「共有メンバー」欄】を選択し、最後に全てにチェックを入れます

Mango TV メンバーのアカウント共有 2023 Mango TV メンバーのアカウント共有 2023 Feb 07, 2024 pm 02:27 PM

Mango TV には、さまざまな種類の映画、テレビシリーズ、バラエティ番組などのリソースがあり、ユーザーはそれらを自由に選択して視聴できます。 Mango TV 会員はすべての VIP ドラマを視聴できるだけでなく、ユーザーが楽しくドラマを視聴できるように最高解像度の画質を設定することもできます。以下では、編集者がユーザーが使用できる無料の Mango TV 会員アカウントをいくつか紹介します。急いで見てください。見てください。 Mango TV 最新のメンバー アカウント無料共有 2023: 注: これらは収集された最新のメンバー アカウントです。直接ログインして使用できます。パスワードを自由に変更しないでください。口座番号: 13842025699 パスワード: qds373 口座番号: 15804882888 パスワード: evr6982 口座番号: 13330925667 パスワード: jgqae 口座番号: 1703

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

Discuz WeChat共有が表示できない問題を解決 Discuz WeChat共有が表示できない問題を解決 Mar 09, 2024 pm 03:39 PM

タイトル: Discuz WeChat の共​​有が表示されない問題を解決するには、具体的なコード例が必要です モバイル インターネットの発展に伴い、WeChat は人々の日常生活に欠かせないものになりました。 Web サイト開発では、ユーザー エクスペリエンスを向上させ、Web サイトの露出を拡大するために、多くの Web サイトに WeChat 共有機能が統合され、ユーザーが Web サイトのコンテンツを Moments または WeChat グループに簡単に共有できるようになります。ただし、Discuz などのオープンソース フォーラム システムを使用すると、WeChat 共有が表示されないという問題が発生し、ユーザー エクスペリエンスに一定の困難が生じることがあります。

HP プリンター ドライバーの 2 つのインストール方法を共有する HP プリンター ドライバーの 2 つのインストール方法を共有する Mar 13, 2024 pm 05:16 PM

HP プリンターは多くのオフィスで欠かせない印刷機器であり、コンピューターにプリンター ドライバーをインストールすると、プリンターが接続できないなどの問題を完全に解決できます。では、HP プリンター ドライバーをインストールするにはどうすればよいでしょうか?以下のエディターでは、2 つの HP プリンター ドライバーのインストール方法を紹介します。 1 つ目の方法: 公式 Web サイトからドライバーをダウンロードする 1. 検索エンジンで HP 中国公式 Web サイトを検索し、サポート欄で [ソフトウェアとドライバー] を選択します。 2. [プリンター] カテゴリを選択し、検索ボックスにプリンターのモデルを入力し、[送信] をクリックしてプリンター ドライバーを見つけます。 3. お使いのコンピューター システムに応じて対応するプリンターを選択します (win10 の場合は、win10 システム用のドライバーを選択します)。 4. ダウンロードが成功したら、フォルダー内でそれを見つけます

トマトの小説リンクの共有方法 トマトの小説リンクの共有方法 Feb 27, 2024 pm 04:20 PM

トマトノベルスは、質の高い小説素材を数多く集めた小説の宝庫です。ここでは、たくさんの種類の小説の中から自分の好みに合わせて好きな小説を選ぶことができます。読書好きの人にとっては、まさに自由に飛べる文学の世界であることは間違いありません。お気に入りの読み物に出会ったとき、それを友達と共有して一緒に読みたいと思うことがありますが、多くのユーザーはそれを共有する方法を正確に知りません。そのため、このチュートリアル ガイドでは、次のようなプレイヤー向けにガイドの詳細な紹介を提供します。もっと詳しく この記事と合わせて読んでみてください!トマトの小説を友達と共有するにはどうすればよいですか? 1. Tomato Novel を開き、クリックして小説に入り、右上隅の共有アイコンをクリックします。 2. 共有チャンネルを選択します ここでは WeChat の友達への共有を例に挙げます。 3. 「共有」をクリックします。 4. 確認できます

See all articles