内から配列リテラルにプッシュできますか?JavaScriptでは、自己呼び出し配列リテラルにプッシュすることができます
答えて
いいえ、できません。 Javascriptでは、items
配列(あなたが "親配列"と呼ぶ)は、文字通りの宣言がインタプリタによって完全に処理されるまでローカルスコープには存在しないので、リテラル宣言内で.push()
にすることはできません。
コード条件に基づいて動的に変更したい場合は、リテラル宣言が完了した後に行う必要があります。
items
の配列を変更するメソッドをリテラル宣言で宣言できます。しかし、そのメソッドが静的宣言の途中で呼び出された場合、その定義がまだ終了していないので、items
はまだ定義されていません。そのメソッドは、配列リテラル宣言が終了した後に呼び出される必要があります。
しかし、リテラル宣言内の自己呼び出し方式では、items
は定義されないため、エラーが発生します。
実行して値を返す自己呼び出し式を持つことができ、その値はリテラル宣言内のいくつかのプロパティの値になります。これはちょうど普通のJavascript式であり、必要に応じて任意のリテラル宣言値を式で計算できます。 ES6では、計算されたプロパティ名を使用することもできます。しかし、parent array
シンボルは、リテラル宣言の解析中に評価される式内からその親シンボルにアクセスすることができないように、リテラル宣言の処理が完了するまで、まだ存在しません。
x
はあなたが宣言した大きなオブジェクトリテラルです
let items = x;
。
items
に何かを割り当てる前に、JavaScriptはx
全体を計算します。したがって、items
に条件付きで追加することはできませんが、x
を評価しています。
配列のリテラル宣言の文脈の中で、配列のスコープを明確にしてくれてありがとう、それは大きな助けになりました!私が達成しようとしていることを達成するためのより良い方法はありますか? – Rick
@Arrow - 私はあなたが達成しようとしていることを本当に正確に理解していません。リテラル宣言に動的に何かを設定する通常の方法は、配列/オブジェクトを変更するか、宣言の後に呼び出すメソッドを作成できる通常のJavascriptを使用して宣言の後に代入/挿入することです。 – jfriend00
私は、リテラルがインタプリタによって完全に処理された後、カスタムイベントを使ってリテラルを起動させることができました。しかし、私は "this"に対するすべての参照を未定義として失う。私はその宣言が定義されて以来、私はそのプロパティにアクセスできるだろうと思った? – Rick
- 1. 自己呼び出すJavaScriptの(カッコ)
- 2. 自己呼び出し関数javascript
- 3. Javascript自己呼び出し関数
- 4. オブジェクト呼び出すことはできませんエラーアクセス配列
- 5. JavaScriptでは、自己呼び出し `call`の目的は何ですか?
- 6. EJBの自己呼び出しと自己注入
- 7. 自己呼び出し機能でjavascriptを巻く
- 8. R6での自己メソッド呼び出しとプライベートメソッド呼び出しの違い
- 9. CSHTMLでjavascriptを呼び出すことができません
- 10. 自己を呼び出すときにひねりエラー
- 11. 文字列リテラルでStringクラスメソッドを呼び出すことができるのはなぜですか?
- 12. 自己呼び出し関数呼び出し
- 13. JavaScriptメソッド呼び出しは、ScriptManagerを使用して1回のみ呼び出すことができます
- 14. JavaScript Array.prototype.sort()DOM.HTMLLIElementを呼び出すことができません
- 15. foreachループで配列ヘッダーを呼び出すことができません
- 16. jQuery自己呼び出し関数は変数にアクセスできませんか?
- 17. このJavaScript関数を一方向に呼び出すことはできますが、もう一方向に呼び出すことはできません。
- 18. Anvantage自己の呼び出し機能
- 19. javascriptで自己呼び出しブロックを作成する以外に()は何をしますか?
- 20. Javascript角型コントローラの自己呼び出し関数
- 21. JavaScript自己呼び出し関数のプロパティ
- 22. 自己呼び出し関数のJavascriptアクセス変数
- 23. このコンテキストを自己呼び出し関数にバインドする方法は?
- 24. .lengthはJavaScript配列の適切な呼び出しですか?
- 25. コンストラクタは自分自身を呼び出すことはできませんC#
- 26. 次の呼び出しでスライドショーを自動再生するJavaScript関数をどのように呼び出すことができますか?
- 27. AJAX呼び出しにJavascript変数を渡すことができません
- 28. javascript onchange関数を呼び出すことができませんでした
- 29. 呼び出されたときにJavaScript配列の値が自動更新されるようにする
- 30. VHDL:配列をパラメータとして呼び出すことができ、配列を返すことはできますか?
"オブジェクト内のオブジェクト"の構文が無効です。オブジェクトリテラル内の値は式にすることができますが、 '{tag:" label "id =" note_title "}'が何を意味するかは不明です。 – RobG
関連:[オブジェクトリテラル宣言の自己参照](http://stackoverflow.com/q/4616202/218196) –
@Felix Kling、ありがとう、私は私の質問でこれを投稿することを考えていた探していますが、特に配列リテラルに興味があります。 var foo = { a:5、 b:6、 init:function(){ this.c = this.a + this.b; これを返す。 } } .init(); – Rick