問題タブ [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 - オブジェクト定義をホイストするにはどうすればよいですか?
私が構築しているAngularアプリのファイルで、 s、sなどを上でjs
宣言し、それらを下で定義したいと思います。controller
service
私は今のところこれで動作しており、問題ありません。問題は、新しいファイルを開始するときに、通常、既存のファイルの内容をコピーして関数の名前を変更することです。ただし、面倒な関数名をたくさん調べなければなりません。これらの関数を含むオブジェクトの名前を単純に変更してから、
に
より良い説明のために、これは私が今持っているものです
そして、ここに私が欲しいものがあります:
特にファイルが大きくなり、より多くのサービス、構成が追加されると、これはかなりきれいになります。
問題は、オブジェクトが「ホイスト」されていないため、オブジェクトの実装を角度のあるものの下に配置できないように見えることです。つまりHomeApp
、ファイルの上部への参照は、下にのみ定義されているためですundefined
(HomeApp
このようにfunction name(){...}
。
ファイルの上位で使用できるように、オブジェクトを持ち上げるにはどうすればよいですか?
javascript - プロパティの初期化でjQueryオブジェクトが空になるのはなぜですか?
どうやら object プロパティの要素は存在しませんが、存在します! そのようなJavaScriptを使用できない場合、誰か教えてもらえますか?
スクリプトを壊している巻き上げに何かがあるのでしょうか?
私はすでにinitの前にオブジェクトを置いてみましたが、結果は同じです。
プロトタイプを拡張できることは知っていますが、このように使用する理由があります。
ありがとう。
javascript - coffeeescript: Array.reduce 内から使用できるプライベート関数を宣言する方法は?
主な目的は、特定のプロパティによって配列から重複するアイテムをフィルタリングすることです。私が使用しようとしているソリューションは、js @ https://stackoverflow.com/a/31194441/618220にあります
私はそれをcoffeescriptで実装しようとしました。関数のスコープを除いて、それはすべて良いです。_indexOfProperty関数を外部から呼び出したくありません- 他のすべてのコンテキストでは役に立たないからです。しかし、(宣言で @ を削除して)非公開にすると、 inputArray.reduce内から呼び出すことができなくなります。
私のコーヒーコードは次のようになります。
他の場所から呼び出す方法は次のとおりです。
そして今、誰でもこれを行うことができます:
これを止めるためにコーヒーを変更する方法は?
javascript - Javascriptホイスト:xとwindow.xの呼び出しの違い
以下のシナリオで巻き上げ動作を説明できる人はいますか?
以下のケースでは、x は 'var' キーワードを使用して定義されていないため、グローバル スコープにアタッチされます。
x を window.x に置き換えると、undefined としてアラートが表示されます。
変数名 (x) とウィンドウ名前空間 (window.x) を使用して変数 (グローバル スコープに関連付けられている) を呼び出すのが異なる理由を説明できますか?
javascript - JavaScript変数巻き上げ解説
javascript での変数の巻き上げに関する次の記事に出くわしました。この記事では、次の 3 点をまとめています。
コードがJavaScriptエンジンによって次のように解釈されることを理解しました
しかし、要約の 3 番目のポイントの意味がわかりませんでした。3番目のポイントを説明できる人はいますか? 3番目のポイントの意味は何ですか?
3 番目のポイントの説明によると、次のスニペットは 8、関数 bar() を返す必要があります。しかし、未定義、関数 bar() と表示されます。
javascript - これがJSでの「巻き上げ」の仕組みですか?
次のコードについての私の仮定は正しいですか:
コードは次のとおりです。
var
上にline 3
あり1
、hoisted
上にあり、コードは次のようになります。
この理解は正しいでしょうか?hoisting
これはJSでどのように機能しますか?
実際には最初に私はhoisted
var
上にいましline 3
たが、それから私は上にあっhoist
たものにならなければline 1
なりませんでした。
javascript - 可変巻き上げ例
こんにちは、コードのスニペットがあります。同じコードの無関係な部分を削除すると、値 x1 が変更されることに混乱しています。調べてみると、巻き上げに関係していることがわかりました。しかし、値 x1 は、私にとって巻き上げの概念でもまだ不明です。誰かがこれについて私に明確にしてもらえますか?
このコードの出力は次のとおりです。
x1 は未定義
x2 は 30
x3 は 50
このコードを次のように変更すると:
出力は次のとおりです。
x1 は 10
javascript - const と let は IIFE パターンを不要にしますか?
私が理解しているように、IIFE パターンは、ES5 以下にはブロック スコープを作成する方法がないという事実への回避策です。すべてを関数にラップしてすぐに呼び出すことで、スコープを作成できます。
これでlet
、const
より多くのブラウザーでサポートが得られるようになりますが、これにより IIFE パターンのようなものの必要性が減りますか?
javascript - 巻き上げ機能の表現
私が知る限り、初期化ではなく、関数式の宣言部分のみが巻き上げられます。例えば:
したがって、「var myFunction;」巻き上げられますが、「関数 myFunction()...」ではありません。
私の質問に、私はグーグル認証機能を少しいじってみました:
10 行目「window.setTimeout(checkAuth...」で、この関数呼び出しの下に宣言されている checkAuth 関数を呼び出します。私の仮定では、「...checkAuth は関数ではありません / 未定義など」というエラーが表示されました。.. .」ですが、代わりにうまくいきました。誰かが私にこれを説明してもらえますか?
javascript - Google ゲージ チャートが Chrome では機能するのに Firefox では機能しないのはなぜですか?
meteor アプリに Google Gauge チャートがあります。
Chrome では正常に動作しますが、Firefox では動作しません。ただし、棒グラフは両方のブラウザーで機能しています。
次のエラー メッセージが表示されます。
コードはここにあります: OnRendered テンプレート イベントでこの guageChart 関数を呼び出しています。
私は何を間違っていますか?