JavaScript hoisting function vs function variable

杀马特。学长 韩版系。学妹 提交于 2019-12-02 02:45:38
soundyogi

A Function Declaration will be hoisted along with its body.

A Function Expression not, only the var statement will be hoisted.


This is how your code "looks" like to the interpreter after compiletime - before runtime:

 var c = function c(){
      console.log("C is called");
 }

 var a = undefined
 var b = undefined

 console.log(a); // undefined at this point
 c(); // can be called since it has been hoisted completely
 b(); // undefined at this point (error)

 a = 'Hello World';
 b = function(){
     console.log("B is called");
 }

KISSJavaScript

Function Expression:

  var b = function(){
        console.log("B is called");
    }

Function Declaration:

function c(){
    console.log("C is called");
}

Function Expressions loads only when the interpreter reaches that line of code.On the other side the function Declaration, it'll always work. Because no code can be called until all declarations are loaded.

Read more about Function Declaration and Function Expression

At the time you are calling b is not defined yet. Your b is a variable which contains function, and the time you are accessing b it has not been defined yet.

Because declare a function with Function Expression create an anonymous function unless you explicitly provide a name :

var b = function() {}   // anonymous function 

and differently when you declare a function with Function Declaration, you set a name :

function c() {}   // c function 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!