javascript 一些需要知道的东西

这里我直接贴出代码,注释已经补全,欢迎指正:

  

  <script type="text/javascript">
      /**
      1,js中一切皆是对象,函数也是,
      2,当定义变量不用var修饰的时候,该变量会被默认为全局变量(即window的属性)
      3,js的作用链:js调用一个变量的时候,首先会在作用域链中的第一个对象中查找,如果没有,继续向外查找(最外层作用域链对象为window,所以js中不用"var"修饰的变量都作为window的属性,即为全局变量),直到找到
      */
     
      var rain = 1;  
      function rainman(){  
          var man = 2;  
          function inner(){  
              var innerVar = 4;  
              alert(rain);  
          }  
          inner();    //调用inner函数  
      }  
      rainman();    //调用rainman函数    ex:以上代码涉及到的作用域链对象有inner,rainman,window
     
     
      var name=1;
      var func=function(){  
          alert(name);  //输出undefined -作用域:在js中是没有块级作用域的,这里的name基于作用域链,所以在func中查找到了name的定义,但是在alert(name)调用的时候"name"还没有被初始化,所以输出undefined
          var name=2;
          alert(name);  //输出2
      }
      var func1=function(){  //当函数被调用的时候,js引擎会自动创建一个活动的对象,函数中定义的变量和子函数,都会成为该活动对象(函数对象)的同名属性
          var funcObj=this;
          funcObj.myName=function(){
              console.log(funcObj);
          }
      }
      //对于func1的调用
      var initFn=function(){
          var f=new func1();
          f.myName();
      }
  
      alert(typeof eve); //输出undefined
      alert(typeof walle); //输出"function"
      function eve(){}  //函数表达式,由js引擎预编译
      var walle=function(){} //函数定义式,运行中执行
      initFn();
      
  </script>
原文地址:https://www.cnblogs.com/Brose/p/js.html