Edge/15.15063を実行しています。 'Can I Use' says const should work.Edge 15の開発ツールでconstが動作しない
実行:
その後const x = 'woo'
:
console.log(x)
戻り
'x' is undefined
スクリーンショット:
なぜconstが動作しないのですか?
Edge/15.15063を実行しています。 'Can I Use' says const should work.Edge 15の開発ツールでconstが動作しない
実行:
その後const x = 'woo'
:
console.log(x)
戻り
'x' is undefined
スクリーンショット:
なぜconstが動作しないのですか?
私は、エッジコンソールがカバーlike other implementations didの下にwith
ステートメントを使用していると思われます。これはvar
sおよびeven function
declarationsグローバルスコープに外に掲揚されているが、let
を説明するだろうとconst
はブロックスコープにロックされます。
with (…) {
const x = 'woo'
}
// next input:
with (…) {
console.log(x) // obviously undeclared
}
は、単一の評価では、複数行モードでそれらを入力してみてください - そこに彼らが動作するはずです。
しかし、コンソールは実際にと感じているので、はグローバルスコープ内のものを評価するようにバグを報告することもできます。
その答えの最後のコメントにはかなりのことが書かれています:「数週間前、Chromeでコンソールの実装をブロックからシンボル魔法に移動しました。機能:) " –
@ JaredSmithハ、完璧!それを読んで気にしなかった、私は実装のアプローチを示したものをリンクしたいだけでした。 – Bergi
私はこれを考え出したと思いますが、これは答えと同じくらい推測されます。しかし、コメントのためにはあまりにも長い。私は何が起こって思い
はconst
とlet
do not create暗黙のグローバルはvar
と同じ方法で、トップレベルのスコープで使用した場合ということです。 const
とlet
で作成されたトップレベル変数はグローバルですが、グローバルwindow
オブジェクトのプロパティではありません。
コンソールで作成された変数にアクセスするための暗黙のwindow
プロパティの作成にMSコンソールが頼っている場合、const
とlet
は機能しません。
私はクローム開発ツールの内部の仕組みがわからないけど、コンソールで実行されるコードのための無名関数のラッパーを作成するようだ:
throw new Error;
VM679:匿名で1不明なエラー : 1:7
(function() { throw new Error; })();
VM759:で1つの不明なエラー nonymous:匿名で21 :1:1:33
私はここで起こって他のサンドボックスがある場合、私は必ずしもそれにドキュメントをたくさん見つけることができませんでしたか不明です。
"* MSコンソールが、変数にアクセスするための暗黙のウィンドウプロパティの作成に依存している場合*"なぜですか? – Bergi
@Bergi IDKそれは私にもダムに聞こえる。私が言ったように、投機は、コメントのためには長すぎる。 –
ラップすると動作しますか?(function(){const x = 'woo'; console.log(x);})(); '? –
コードブロックに入れるとどうなりますか? '{const x = 'woo'; console.log(x); } '? – evolutionxbox
@ jared:ラップ時に動作します – mikemaccana