testVariable
を使用するときに 2 つの異なる出力がある理由を誰でも説明できますかlet
。window
同じ名前の変数がオブジェクトで定義されている場合、実行時エラーが発生しないのはなぜですか?
Object.defineProperty(window, 'testVariable', {
value: 22
})
let testVariable = 12
console.log(window.testVariable) // result: 22
console.log(testVariable) // result: 12
- しかし、 を使用する
var
と、出力は同じになります。
Object.defineProperty(window, 'testVariable', {
value: 22
})
var testVariable = 12
console.log(window.testVariable) // result: 12
console.log(testVariable) // result: 12
- 次のコードが正しく実行される理由
<script>
Object.defineProperty(window, 'a', {
value: 33
})
let a = 13
</script>
<script>
console.log(a) // result: 13
</script>
- しかし、以下はエラーをスローします。
<script>
Object.defineProperty(window, 'a', {
value: 33
})
</script>
<script>
let a = 13
console.log(a) // Uncaught SyntaxError: Identifier 'a' has already been declared
</script>