5
A
答えて
1
From the Mozilla JS Docs for delete
:
delete
は、オブジェクトのプロパティにのみ有効です。変数名または関数名には、 の効果はありません。
提供される例は、あなたのものと似ています。
だから、alert(delete y);
はなぜ機能しますか?私は正確な答えを釘付けにすることはできませんでしたが、基本的にあなたは評価の範囲に頼ることができません。
私はeval('var y = 2');
が変数として宣言されないとがプロパティとして扱われますが、私は我々のテストの結果よりもさらに他のもののための証拠を発見していないと思います。私は正確な理由が見つかったかどうかを調査するつもりです。 eval
すごみの
その他の記事:
- http://wingolog.org/archives/2012/01/12/javascript-eval-considered-crazy
- http://brownplt.github.com/2012/10/21/js-eval.html
- http://blog.rakeshpai.me/2008/10/understanding-eval-scope-spoiler-its.html
EDIT 0
@Xavier Holtのコメントに基づいて、私はeval
に関して吊り上げと範囲を調べました。 This scope cheatsheet from Mozilla Dev docsは、次のことを持っていた:
のevalは、割り当てを取り込むことができるが、試用版が持つと 同様の割り当てを取り込むことができるので、ないのvar宣言
eval'd VARSは、通常、ホイスト:
function f() { { let x = "inner"; eval("var x = 'outer'"); print(x); // "outer" } }
これを正しく読んでいれば、以前の私の前提は正しかった。 eval()
は、変数を宣言することによって、var
の宣言を評価しません。 delete
が機能するには、プロパティを作成するか、プロパティとして処理する必要があります。
関連する問題
- 1. 変数が</p> <pre><code>var isUpdated:Bool = false </code></pre> <p>がtrueの場合、私はすぐに</p> <pre><code>func performSegue() { self.performSegueWithIdentifier("toTabSegue", sender: self) } </code></pre> <p>を実行したい
- 2. Javaの結果は、(int)Math.pow(2、x)と1 << x
- 3. classobjectsはシングルトンですか?私たちは<code>x = type(a)</code>と<code>x == y</code>を持っている場合は
- 4. TensorFlow演算子のオーバーロード</p> <pre><code>tf.add(x, y) </code></pre> <p>とTensorFlowで</p> <pre><code>x + y </code></pre> <p>の違いは何
- 5. は、どのように私は、変数</p> <pre><code>int x = 2; </code></pre> <p>とリストを持っている
- 6. </p> <p>が実は、私は私の<code>List<x, y></code>への変数のすべての<code>y</code>要素を追加したい...私はここに新たなんだと私はリストといくつかの助けをしたいと思い
- 7. <ui:repeat>がXの場合は<c:forEach>がYの場合
- 8. 内部スコープ内でxが定義されていないのはなぜですか?</p> <pre><code>var x = 1; (function() { console.log(x); var x = 2; }()); </code></pre><p>なぜそれが(X)をCONSOLE.LOG場合、xが未定義であるということである以下のコードで
- 9. grepは、フォルダを除外して、私は</p> <pre><code>/var/ </code></pre> <p>にいるならば、私は<code>/var/www</code></p> <p>を検索したいLinuxの
- 10. 私は2つの機能</p> <pre><code>void foo() { std::cout << 1 << std::endl; } void bar() { std::cout << 2 << std::endl; } </code></pre> <p>をお持ちの場合は2個の関数のC++
- 11. Swiftでnilを指定した場合の省略表現ですか?</p> <pre><code>x = x ?? y </code></pre> <p>しかし<code>x ??= y</code>がコンパイラによって受け入れられない:として私は、上記のステートメントを知って
- 12. std :: cout << xの間のdiffrenceは何ですか;とstd :: cout << x << std :: endl ;?
- 13. SQLは、私が<strong>サブグループこの単純な<code>xy_table</code>の</strong>に<code>y</code>の<strong><a href="http://en.wikipedia.org/wiki/Median" rel="nofollow noreferrer">Median</a></strong>を計算したいサブグループで
- 14. は、どのように私は<code>string</code>あるこの</p> <pre><code>var alldest = cc.returnallfullDestinations(mainElement).Split('|'); </code></pre> <p><code>returnallfullDestionations</code>のようなデータを取得していますC#
- 15. x =(y/n)+(y%n?1:0)を計算するよりエレガントな方法はありますか?</p> <p><code>x = (y/n) + (y % n ? 1 : 0);</code></p> <p>以上の明示:プログラミングながら
- 16. なぜ[:] = 1は[:] = '1'と根本的に異なるのですか? <code>a</code>が<code>['1']</code>ある最初のケースで</p> <pre><code>a = [] a[:] = '1' </code></pre><p>と</p> <pre><code>a = [] a[:] = 1 </code></pre><p>:
- 17. は、私は、この種の機能</p> <code>alpha</code>、<code>beta</code>、<code>A_i</code>と<code>B_i</code>は実数である<pre><code>f(x)=alpha+beta \sum_i A_i/(x-B_i) </code></pre> <p>を持っている機能
- 18. は私が整数に行を変更したいRDD</p> <pre><code>rdd=sc.parallelize([[True,False,False], [True,True,True], [False,False,True]]) </code></pre> <p>を持っRDD
- 19. 私のアルゴリズムは、iは整数<code>x</code>と<code>i</code>の1つの< <code>i</code> < <code>x</code>次の値を<code>i = floor(x/i) + (x mod i)</code>によって計算されるように、出発整数<code>i</code>ためにそのアルゴリズムを有する
- 20. Heredoc <<<または<<?
- 21. は、これは私です</p> <pre><code>'[errors]' => [], </code></pre> <p>..私は、ユーザーテーブルを持っていると私は私が<code>$user</code>をデバッグする場合でも、それはnullを返し<code>save()</code>保存したいときにエラーがないCakePhp3
- 22. #if defined(x)|| (y)とする。これは有効ですか?</p> <pre><code>#if defined(x) || y </code></pre> <p>上記の文はどういう意味:私は次のようなコードの一部に出くわした1件のレビュー中
- 23. Perlの文字列の乗算がundefで警告しないのはなぜですか?</p> <pre><code>$foo . '' </code></pre> <p>と</p> <pre><code>"$foo" </code></pre> <p>
- 24. は、どのように私は私は2つのセグメントを持っている場合</p> <p>が</p> <p>例であるURI
- 25. <em></em></em>場合、他<em>両方の条件がプログラムの内部<code>if</code>条件を実行した後<code>if($flw){ ... }</code></p> <p>内部で実行されているなぜならば、他の両方の条件PHP
- 26. <code>parseTwoPoleBreakers</code>関数に順次<code>df4</code> & <code>df3</code>、<code>df2</code>、文と私は<code>df1</code>に合格しようとしているのPython
- 27. Javaの私は</p> <pre><code>String[] args = {"a", "b", "c"}; method(args); private void method(String[] args){ return args; } </code></pre> <p>は、なぜ私が行うことができない次のコードがエラーなしで以下のいる
- 28. Python - 多次元配列に__getitem__を実装する方法はありますか?私が呼ぶとき、生憎</p> <pre><code>class Board(): ... def __getitem__(self, y, x): return self.board[y][x] </code></pre> <p>しかし:
- 29. x * 2 + 1を計算する簡単な方法はありますか? <br> <code>x = x*2;</code>が<code>x *= 2;</code></p> <p>のように書くことができます
- 30. は、私は開始日<em>(最初ControlParameter)</em>と最後の日付<em>(第2 ControlParameter)現在の月の</em>に次のコードで<code>DefaultValue</code>さんを設定するにはどうすればよい
ボーナスの質問:なぜあなたはこれを必要としますか? –
私はあなたに技術的な詳細を教えることはできませんが、これはJavaScriptの "[hoisting](http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting)"の動作に関係していると思われます。基本的に、 'var foo;'で定義された変数は特別な扱いを受けます。なぜなら、JSエンジンは関数が動作する前にそこにいることを知っているからです。'eval'で宣言された変数は認識されないので、特別な扱いを受けません。 –
あなたはhttp://perfectionkills.com/understanding-delete/を読んでいますか? – Bergi