zoukankan      html  css  js  c++  java
  • 变量提升和函数形参

    JavaScript是自上向下执行的,但是在JS代码执行前,会首先进行语法分析,所以事实上JS运行要分为语法分析和执行两个阶段:

    语法分析:

      1、分析形参

      2、分析变量声明(var)

      3、分析函数声明(function)

    具体执行步骤:

      1当函数被执行时,首先创建活动对象AO(Active Object);

      2找函数形参和声明,将变量和形参作为AO属性名,值为undefined

      3接收函数实参,函数属性进行赋值 (这里对象里面的arguments[index]将会和第index个形参指向同一个地址)(arguments为实参列表)

      4.分析函数声明,(没有的同名的变量或函数就进行声明,提升整个函数体;如果有同名的函数或者变量则进行覆盖)

    例子:

    function a(b){
      console.log(b);  //function b(){}
      var b = 'huang';
      console.log(b);  //'huang'
      arguments[0] = 1;
      console.log(b);  //1
      console.log(c);  //function c(){ console.log(41) }
      function b() {};
      function c(){console.log(6564)}
      function c() {console.log(41)}
    }
    a(45);
     
    它实际上的执行步骤是:
    function a(b){
      var b = undefined;
      b = 45;
      b = function b(){};
      //function c() {console.log(6564)}
      function c() {console.log(41)}

      console.log(b);
      b = 'huang';
      console.log(b);
      arguments[0] = 1;
      console.log(b);
      console.log(c);
    }
  • 相关阅读:
    2.6
    2.5
    2.4
    2.3
    2.2
    2.1
    条件查询
    项目办公自动化工具-文件夹照片批量插入word·
    suffer根据CGCS2000坐标利用散点图生成奥维坐标
    案例应用:给照片文件夹里照片按日期排序后引用表格的照片名称批量重命名(源码)
  • 原文地址:https://www.cnblogs.com/lianchenxi/p/9312658.html
Copyright © 2011-2022 走看看