問題タブ [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.

0 投票する
1 に答える
66 参照

javascript - オブジェクト定義をホイストするにはどうすればよいですか?

私が構築しているAngularアプリのファイルで、 s、sなどを上でjs宣言し、それらを下で定義したいと思います。controllerservice

私は今のところこれで動作しており、問題ありません。問題は、新しいファイルを開始するときに、通常、既存のファイルの内容をコピーして関数の名前を変更することです。ただし、面倒な関数名をたくさん調べなければなりません。これらの関数を含むオブジェクトの名前を単純に変更してから、

より良い説明のために、これは私が今持っているものです

そして、ここに私が欲しいものがあります:

特にファイルが大きくなり、より多くのサービス、構成が追加されると、これはかなりきれいになります。

問題は、オブジェクトが「ホイスト」されていないため、オブジェクトの実装を角度のあるものの下に配置できないように見えることです。つまりHomeApp、ファイルの上部への参照は、下にのみ定義されているためですundefined(HomeAppこのようにfunction name(){...}

ファイルの上位で使用できるように、オブジェクトを持ち上げるにはどうすればよいですか?

0 投票する
2 に答える
76 参照

javascript - プロパティの初期化でjQueryオブジェクトが空になるのはなぜですか?

どうやら object プロパティの要素は存在しませんが、存在します! そのようなJavaScriptを使用できない場合、誰か教えてもらえますか?

スクリプトを壊している巻き上げに何かがあるのでしょうか?

私はすでにinitの前にオブジェクトを置いてみましたが、結果は同じです。

プロトタイプを拡張できることは知っていますが、このように使用する理由があります。

ありがとう。

0 投票する
2 に答える
30 参照

javascript - coffeeescript: Array.reduce 内から使用できるプライベート関数を宣言する方法は?

主な目的は、特定のプロパティによって配列から重複するアイテムをフィルタリングすることです。私が使用しようとしているソリューションは、js @ https://stackoverflow.com/a/31194441/618220にあります

私はそれをcoffeescriptで実装しようとしました。関数のスコープを除いて、それはすべて良いです。_indexOfProperty関数を外部から呼び出したくありません- 他のすべてのコンテキストでは役に立たないからです。しかし、(宣言で @ を削除して)非公開にすると、 inputArray.reduce内から呼び出すことができなくなります。

私のコーヒーコードは次のようになります。

他の場所から呼び出す方法は次のとおりです。

そして今、誰でもこれを行うことができます:

これを止めるためにコーヒーを変更する方法は?

0 投票する
4 に答える
144 参照

javascript - Javascriptホイスト:xとwindow.xの呼び出しの違い

以下のシナリオで巻き上げ動作を説明できる人はいますか?

以下のケースでは、x は 'var' キーワードを使用して定義されていないため、グローバル スコープにアタッチされます。

x を window.x に置き換えると、undefined としてアラートが表示されます。

変数名 (x) とウィンドウ名前空間 (window.x) を使用して変数 (グローバル スコープに関連付けられている) を呼び出すのが異なる理由を説明できますか?

0 投票する
3 に答える
258 参照

javascript - JavaScript変数巻き上げ解説

javascript での変数の巻き上げに関する次の記事に出くわしました。この記事では、次の 3 点をまとめています。

サイト ポイント

コードがJavaScriptエンジンによって次のように解釈されることを理解しました

しかし、要約の 3 番目のポイントの意味がわかりませんでした。3番目のポイントを説明できる人はいますか? 3番目のポイントの意味は何ですか?

3 番目のポイントの説明によると、次のスニペットは 8、関数 bar() を返す必要があります。しかし、未定義、関数 bar() と表示されます。

0 投票する
0 に答える
33 参照

javascript - これがJSでの「巻き上げ」の仕組みですか?

次のコードについての私の仮定は正しいですか:

コードは次のとおりです。

var上にline 3あり1hoisted上にあり、コードは次のようになります。

この理解は正しいでしょうか?hoistingこれはJSでどのように機能しますか?

実際には最初に私はhoisted var上にいましline 3たが、それから私は上にあっhoistたものにならなければline 1なりませんでした。

0 投票する
2 に答える
93 参照

javascript - 可変巻き上げ例

こんにちは、コードのスニペットがあります。同じコードの無関係な部分を削除すると、値 x1 が変更されることに混乱しています。調べてみると、巻き上げに関係していることがわかりました。しかし、値 x1 は、私にとって巻き上げの概念でもまだ不明です。誰かがこれについて私に明確にしてもらえますか?

このコードの出力は次のとおりです。

x1 は未定義
x2 は 30
x3 は 50

このコードを次のように変更すると:

出力は次のとおりです。

x1 は 10

0 投票する
3 に答える
4631 参照

javascript - const と let は IIFE パターンを不要にしますか?

私が理解しているように、IIFE パターンは、ES5 以下にはブロック スコープを作成する方法がないという事実への回避策です。すべてを関数にラップしてすぐに呼び出すことで、スコープを作成できます。

これでletconstより多くのブラウザーでサポートが得られるようになりますが、これにより IIFE パターンのようなものの必要性が減りますか?

0 投票する
2 に答える
350 参照

javascript - 巻き上げ機能の表現

私が知る限り、初期化ではなく、関数式の宣言部分のみが巻き上げられます。例えば:

したがって、「var myFunction;」巻き上げられますが、「関数 myFunction()...」ではありません。

私の質問に、私はグーグル認証機能を少しいじってみました:

10 行目「window.setTimeout(checkAuth...」で、この関数呼び出しの下に宣言されている checkAuth 関数を呼び出します。私の仮定では、「...checkAuth は関数ではありません / 未定義など」というエラーが表示されました。.. .」ですが、代わりにうまくいきました。誰かが私にこれを説明してもらえますか?

0 投票する
1 に答える
315 参照

javascript - Google ゲージ チャートが Chrome では機能するのに Firefox では機能しないのはなぜですか?

meteor アプリに Google Gauge チャートがあります。

Chrome では正常に動作しますが、Firefox では動作しません。ただし、棒グラフは両方のブラウザーで機能しています。

次のエラー メッセージが表示されます。

コードはここにあります: OnRendered テンプレート イベントでこの guageChart 関数を呼び出しています。

私は何を間違っていますか?