すべての JavaScript プログラマーが知っておくべきことは何ですか? [closed] 質問する

すべての JavaScript プログラマーが知っておくべきことは何ですか? [closed] 質問する

「私は JavaScript を知っている」と言えるようになるために、すべての JavaScript プログラマーが知っておくべき一連の事柄はありますか?

ベストアンサー1

jQuery ではない。YUI ではない。(などなど) ではない。

フレームワークは便利な場合もありますが、JavaScript と DOM が実際にどのように動作するかという、時には厄介な詳細を隠してしまうことがよくあります。「JavaScript を知っている」と言えるようになることが目標であれば、フレームワークに多くの時間を費やすことはそれに反します。

ここでは、JavaScript 言語の機能のいくつかを紹介します。これらの機能は、JavaScript が何をしているのかを理解し、困惑しないために知っておく必要がありますが、多くの人にはすぐにはわかりません。

  • object.propobject['prop']同じものです (ですから の使用はやめてくださいeval)。オブジェクトのプロパティは常に文字列です (配列の場合でも)。for...は何inのためにあるのか(そしてそれが何ではないのか)。

  • 不動産スニッフィングとは何かundefined(そしてなぜ臭いのか); 一見あまり知られていない演算子が有益であり、 /チェックinと異なる理由; ; の目的。typeofundefinedhasOwnPropertydelete

  • データ型は実際には float であることNumber、float を使用する際の言語に依存しない難しさ、parseInt8 進数の罠を回避すること。

  • varネストされた関数のスコープ;偶発的なグローバル化を避けるためにスコープ内で使用する必要があること; クロージャにスコープを使用する方法;閉ループ問題

  • グローバル変数とwindowプロパティがどのように衝突するか、グローバル変数とドキュメント要素が衝突してはならないのに IE では衝突する理由、varこれを回避するにはグローバル スコープでも使用する必要があること。

  • このfunction声明が「ホイスト' コードの前の定義; 関数文と関数式の違い; 名前付き関数式がなぜ必要か使用しないでください

  • コンストラクター関数、prototypeプロパティ、new演算子が実際にどのように機能するか。方法これを利用して、実際に必要な通常のクラス/サブクラス/インスタンス システムを作成することは、プロトタイプではなくクロージャ ベースのオブジェクトを使用したい場合に便利です。(ほとんどの JS チュートリアル マテリアルは、この点についてまったくひどい内容で、頭の中で理解するのに何年もかかりました。)

  • 方法thisは呼び出し時に決定され、バインドされません。その結果、メソッドの受け渡し方法期待通りに動作しない他の言語から; クロージャまたはをFunction#bind使用してそれを回避できる方法。

  • ECMAScript第5版の他の機能としてはindexOf、、forEach関数型プログラミング方法Array; 古いブラウザを修正して使用できるようにする方法; インライン匿名関数式を使用してコンパクトで読みやすいコードを取得する方法。

  • ブラウザとユーザー コード間の制御フロー、同期実行と非同期実行、制御フロー内で発生するイベント (フォーカスなど) と制御が戻ったときに発生するイベントとタイムアウト、同期するはずの組み込みを呼び出すと、潜在的にalert悲惨な再入可能性が発生する可能性がある理由。

  • クロスウィンドウ スクリプトが にどのように影響するかinstanceof、クロスウィンドウ スクリプトが異なるドキュメント間の制御フローにどのように影響するか、postMessageこれをどのように修正するか。

見るこの答え最後の2つの項目に関して。

何よりも、JavaScript を批判的に見る必要があります。歴史的な理由から JavaScript は不完全な言語である (ほとんどの言語よりもさらに不完全である) ことを認め、最悪の問題点は避ける必要があります。この点に関する Crockford の著作は間違いなく読む価値があります (ただし、どの部分が「良い部分」であるかについては、私は 100% 同意しません)。

おすすめ記事