[解決済み] JavaScriptプログラマーが知っておくべきこととは?[クローズド]
質問
JavaScriptプログラマが「私はJavaScriptを知っている」と言えるために知っておくべきことはありますか?
どのように解決するのか?
jQueryではありません。YUIでもない。ではない(などなど)。
フレームワークは便利かもしれませんが、JavaScript と DOM が実際にどのように動作するかという、時に醜い詳細を隠していることが多いのです。もしあなたの目的が「私はJavaScriptを知っている」と言えるようになることであるなら、フレームワークに多くの時間を費やすことはそれに反しています。
ここでは、JavaScriptが何をしているのかを理解し、バレないようにするために知っておくべき、しかし多くの人にとってすぐにはわからないJavaScriptの言語機能をいくつか紹介します。
-
その
object.prop
とobject['prop']
は同じものです。eval
オブジェクトのプロパティは常に文字列であること(配列の場合でも)。 何for
...in
は (そして そうでないもの ). -
プロパティスニッフィング;何
undefined
は(そして なぜ臭うのか )、なぜ、一見するとあまり知られていないin
とは異なる有益な演算子です。typeof
/undefined
をチェックします。hasOwnProperty
の目的delete
. -
その
Number
データ型が本当に浮動小数点数であること、言語に依存しない浮動小数点数の使用方法の難しさ、そしてparseInt
8進数の罠 -
ネストされた関数のスコープ; を使う必然性
var
を使用することで、偶発的なグローバルを避けることができます。また、スコープをクロージャに使用することもできます。 クロージャループ問題 . -
どのようにグローバル変数と
window
プロパティが衝突すること、グローバル変数とドキュメント要素が衝突しないはずなのに IE では衝突してしまうこと、グローバル変数とドキュメント要素が衝突しないようにするためにvar
をグローバルスコープでも使用することで、これを回避することができます。 -
どのように
function
ステートメントが作用して、' ホイスト 関数文と関数式の違い、なぜ関数式という名前なのか? を使うべきではありません。 . -
コンストラクタの機能である
prototype
プロパティとnew
演算子は本当に機能します。 メソッド プロトタイピングの代わりにクロージャベースのオブジェクトを使いたい場合、これを利用して通常のクラス/サブクラス/インスタンスシステムを作成します。(ほとんどのJSチュートリアルの教材は、これに関して全くひどいものです。) -
どのように
this
はバインドされるのではなく、呼び出し時に決定されます。 は期待通りには動きません。 他の言語では、クロージャやFunction#bind
は、それを回避するために使用されるかもしれません。 -
その他、ECMAScript 第 5 版の特徴である
indexOf
,forEach
と、関数型プログラミングの メソッドをArray
古いブラウザでも使えるように修正する方法、インラインの無名関数式を使ってコンパクトで読みやすいコードを作る方法などです。 -
ブラウザとユーザーコードの間の制御の流れ、同期と非同期実行、制御の流れの中で発生するイベント(例:フォーカス)と制御が戻ったときに発生するイベントとタイムアウト、同期であるはずの
alert
は、潜在的に悲惨なリエントランシーを引き起こすことになりかねません。 -
クロスウィンドウスクリプティングの影響
instanceof
クロスウィンドウスクリプティングが異なるドキュメント間のコントロールフローにどのような影響を与えるか、どのようにpostMessage
がこれを解決してくれることを期待します。
参照 この回答 については、最後の2項目です。
何よりも、JavaScriptを批判的に見ること、歴史的な理由から不完全な言語であること(他の言語よりも)、そしてその最悪のトラブルスポットを避けることが重要です。この点に関するCrockfordの研究は、間違いなく読む価値があります(ただし、どの部分が「良い部分」なのかについては、彼と100%同意するわけではありません)。
関連
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
JSクリックイベント - Uncaught TypeError: プロパティ 'onclick' に null を設定できません。
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
jsを使った簡単な照明スイッチのコード
-
vueディレクティブv-bindの使用と注意点
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
[解決済み] JavaScriptはシングルスレッドであることが保証されていますか?
-
[解決済み] JavaScriptでカスタムオブジェクトを「正しく」作成する方法とは?
-
[解決済み】変数をundefinedに設定したり、引数にundefinedを渡すことはできますか?