• 变量提升和函数形参


    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);
    }
  • 相关阅读:
    ios 视频旋转---分解ZFPlayer
    IOS lame库 pcm转mp3 分析(方案二)
    IOS lame库 pcm转mp3 分析(方案一)
    ios 动态库合成包(真机&模拟器)脚本
    lame 制作ios静态库
    React Native scrollview 循环播放
    React Native Image多种加载图片方式
    汉字转拼音(包含多音字)
    React Native Alert、ActionSheet
    React Native Picker (城市选择器)
  • 原文地址:https://www.cnblogs.com/lianchenxi/p/9312658.html
Copyright © 2020-2023  润新知