窗口函数中的一个变量.未正确设置Onload

a variable in the function on window.onload is not set properly

本文关键字:变量 Onload 设置 一个 窗口函数      更新时间:2023-09-26

当我像下面这样编码时,变量'name'没有初始值"test"。当我不使用"window.onload"时,它工作得很好。

与"window. js"之间的javascript变量有什么区别吗?"Onload"和不加载

<!DOCTYPE html>
  <html>
      <head>
      <title>HTML5, CSS3 and JavaScript demo</title>
      </head>
      <body>
      <!-- Start your code here -->
     <script>
     window.onload=function(){ 
     var name = "test";
     function foo(msg,msg2) {
              console.log(msg + '  ' + msg2);
              alert(this.name);
  }
  foo('normal call','default');
  var obj = {
              name : 'steve'
          }
  foo.call(obj,'call function','object'); 
  foo.apply(obj,['apply function','object']); 
   }

  </script>
  <!-- End your code here -->
  </body>
  </html>

当我不使用"window.onload"时,它工作得很好。

这是因为当你不把代码放在一个函数中,你在全局范围内声明name,使它成为一个全局变量,所以你可以访问它作为全局对象的属性。在松散模式下,当您像第一个示例那样直接调用foo时,foo中的this将引用全局对象。所以在函数外,它可以工作,因为name是全局的。

在内部,它只是一个普通的变量,变量和你可以在代码中获得引用的任何对象之间没有联系。