[Javascript] Hoisting in JavaScript

  • Variable Hoisting
// Variable Hoisting
var myVariable = 'Outer Value';
var fn = function(){
  alert(myVariable);
  var myVariable = 'New Local Value';
};
fn();

 

In complier, the code will be:

复制代码
var myVariable = 'Outer Value';

var fn = function(){
   var myVariable  = undefined;
   alert(myVariable );
   myVariable = 'New Local Value';
}

fn();

//So the alert result will be undefined
复制代码

 

Function Declaration vs Function Expression

function fnDeclaration(){
  return 'This is function declaration';
}


var fnExpression = function(){
   return 'This is function expression';
}

 

  • Function Declaration Hoisting
复制代码
// Function Declaration Hoisting
function foo(){
  function bar() {
      return 1;
  }
  return bar();
  function bar() {
      return 2;
  }
}
alert(foo());
复制代码

In complier, the code will be:

复制代码
function foo(){
    function bar(){
        return 1;
    }

    function bar(){
        return 2;
    }

     return bar();  // 2 will be alerted
}
复制代码

 

  • Function Expression Hoisting
复制代码
// Function Expression Hoisting
function foo2(){
  var bar = function() {
      return 1;
  };
  return bar();
  var bar = function() {
      return 2;
  };
}
alert(foo2());
复制代码

 

In complier, the code will be:

复制代码
function foo2(){

    var bar = undefined;  //variable is hoisted
    var bar = undefined;

    bar = function(){      //function expression is not hoisted
        return 1;
    }

    return bar();
}
复制代码

 

So, variable & function declaration will be hoisted! But the function expression is really not be hosited.

 

posted @   Zhentiw  阅读(337)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2014-08-01 [Backbone]5. Model & View, toggle between Models and Views -- 2
2014-08-01 [Backbone]4. Model & View, toggle between Model and View. -- 1
2014-08-01 [Backbone]3. More detail on View
2014-08-01 [Backbone]2. More detail in Models
2014-08-01 [Backbone]1. Module, View classed
2014-08-01 [Node.js]33. Level 7: Persisting Questions
点击右上角即可分享
微信分享提示