1
  1. testVariableを使用するときに 2 つの異なる出力がある理由を誰でも説明できますかletwindow同じ名前の変数がオブジェクトで定義されている場合、実行時エラーが発生しないのはなぜですか?
    Object.defineProperty(window, 'testVariable', {
      value: 22
    })

    let testVariable = 12

    console.log(window.testVariable)   // result: 22
    console.log(testVariable)          // result: 12
  1. しかし、 を使用するvarと、出力は同じになります。
    Object.defineProperty(window, 'testVariable', {
      value: 22
    })

    var testVariable = 12

    console.log(window.testVariable)   // result: 12
    console.log(testVariable)          // result: 12
  1. 次のコードが正しく実行される理由
  <script>
    Object.defineProperty(window, 'a', {
      value: 33
    })

    let a = 13
  </script>

  <script>
    console.log(a)    // result: 13
  </script>
  1. しかし、以下はエラーをスローします。
  <script>
    Object.defineProperty(window, 'a', {
      value: 33
    })
  </script>

  <script>
    let a = 13
    console.log(a)   // Uncaught SyntaxError: Identifier 'a' has already been declared
  </script>
4

1 に答える 1