問題タブ [hoisting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 最初の関数が定義される前に別の関数で関数を使用する
API を作成するときは、関数を上から順に並べるのが好きな傾向があります。最も公開されている関数を一番上に、ヘルパー関数を一番下に置きます。ただし、var
マジックfunction
宣言以外で関数を定義する場合は、関数を定義する前に使用することはできません。$company
では、呼び出されたオブジェクトがあり、そのメソッドを定義している場合はどうでしょう。この方法で JS を安全に注文できますか?
現在のバージョンの Firefox では動作するようですが、動作が定義されているかどうかを知りたいです。これが壊れる IE のバージョンはありますか?
javascript - JavaScriptでの名前解決順序の巻き上げはどのように機能しますか?
面白いクイズに出会いました
私の解釈は次のようなものです(コンソールによるとこれは間違っています:)):
これは私がこれを読んでいる参照です
JavaScript では、次の 4 つの基本的な方法のいずれかで名前がスコープに入ります。2. 仮パラメータ: 関数は、その関数の本体にスコープされる名前付きの仮パラメータを持つことができます。3. 関数宣言: 関数 foo() {} の形式です。4. 変数宣言: これらは var foo; の形式を取ります。
彼は後に引用しました:
覚えておくべき最も重要な特別なケースは、名前解決の順序です。名前が特定のスコープに入る方法は 4 つあります。上にリストした順序は、それらが解決される順序です。一般に、名前が既に定義されている場合、同じ名前の別のプロパティによってオーバーライドされることはありません。これは、関数宣言が変数宣言よりも優先されることを意味します。これは、その名前への代入が機能しないという意味ではなく、宣言部分が無視されるというだけです。
上記の例を参照して、誰でもこれを単純化できますか? 知りたい主なポイント:
- 関数内にない変数はどのように
var
巻き上げられましたか? - 巻き上げ中に変数オーバーライドは発生しますか?
scala - scala コンパイラは正規表現を巻き上げますか
これはどうだろうか:
この:
パフォーマンスの違いがあります。つまり、scala コンパイラはそれ"some complex regex".r
が定数であることを認識してキャッシュし、毎回再コンパイルしないようにしますか?
javascript - angularjsで変数が期待どおりに巻き上げられない
私は John Papa と彼の角度のあるスタイル ガイドの推奨に従っています。ビューで使用できるすべての変数とメソッドをコントローラーの上部に配置し、JavaScript を使用して実行時に変数を持ち上げるというアイデアが気に入っています。巻き上げについては、思ったほどよく理解できていません。次の例では、damumValue 変数宣言が $scope.dumbValue 代入ステートメントの上に持ち上げられることを期待します。
しかし、このプランカーでは、そうではないことがわかります。select ng-model の値は初期化されていません。割り当てステートメントを変数宣言の下に移動すると、ng-model が初期化されます。
javascriptが上記の割り当てをホイストしないのはなぜですかvar dumbValue
、それとも角度がそれを処理する方法について私が理解できない何かがありますか?
javascript - JavaScript 変数ホイストの例
JavaScript の変数ホイストについて質問があります。
次の例を考えてみましょう: </p>
なぜがstringtypeof myName
として返されるのか、実際には混乱しています。
私の理解では、例は次のように処理されます。
- 最初に関数宣言 (
function myName ()
) が一番上に持ち上げられ、次に - JS インタープリターはその行を読み取ります
var myName = "Richard"
(関数宣言が変数宣言よりも優先されるため)。ただし、"myName" という名前のプロパティが既に存在するため、このステートメントは無視されます。
したがって、(文字列ではなく)関数typeof myName
として返される必要があります。
私の理解はどこが間違っていますか?
javascript - グローバル変数のJavaScript巻き上げ
グローバル変数に対してJavaScriptの巻き上げがどのように機能するのか疑問に思っていました。
次のコード スニペットがあるとします。
この場合、「b is not defined」というエラーが表示されます。なぜJavascriptの巻き上げがグローバル変数に対して機能しないのだろうか。これを探してみましたが、可変巻き上げの結果しか得られませんでした。何かご意見は??