var foo=function(){}与函数foo()在JavaScript中的区别是什么

  介绍

本篇文章给大家分享的是有关var foo=function(){}与函数foo()在JavaScript中的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

JavaScript函数和变量声明的“提前”(起重机)行为

简单的说如果我们使用匿名函数

<代码> var={}

这种方式,编译后变量声明一个会“被提”前了,但是他的赋值(也就是a)并不会被提前。

也就是,匿名函数只有在被调用时才被初始化。

如果使用

<代码>函数(){};

这种方式,编译后函数声明和他的赋值都会被提前。

也就是说函数声明过程在整个程序执行之前的预处理就完成了,所以只要处于同一个作用域,就可以访问到,即使在定义之前调用它也可以。

看一个例子

function  hereOrThere (), {,//function 语句   return 才能;& # 39;这是# 39;;   }   console.log (hereOrThere ());,//, alerts  & # 39;还有# 39;   function  hereOrThere (), {   return 才能;& # 39;还有# 39;;   }

我们会发现<代码>警报(hereOrThere) 语句执行时会<代码>警报(& # 39;还有# 39;) !这里的行为其实非常出乎意料,主要原因是JavaScript函数声明的“提前“行为,简而言之,就是JavaScript允许我们在变量和函数被声明之前使用它们,而第二个定义覆盖了第一种定义。换句话说,上述代码编译之后相当于

function  hereOrThere (), {,//function 语句   ,return  & # 39;这是# 39;;   }   function  hereOrThere(),{//申明前置了,但因为这里的申明和赋值在一起,所以一起前置   ,return  & # 39;还有# 39;;   }   console.log (hereOrThere ());,//, alerts  & # 39;还有# 39;

我们期待的行为

var  hereOrThere =, function  (), {,//function 表达式   return 才能;& # 39;这是# 39;;   };   console.log (hereOrThere ());,//, alerts  & # 39;这是# 39;   时间=hereOrThere  function  (), {   return 才能;& # 39;还有# 39;;   };

这段程序编译之后相当于:

var  hereOrThere;//申明前置了   时间=hereOrThere 函数(),{,//function 表达式   ,return  & # 39;这是# 39;;   };   console.log (hereOrThere ());,//, alerts  & # 39;这是# 39;   时间=hereOrThere 函数(),{   ,return  & # 39;还有# 39;;   };

以上就是var foo=function(){}与函数foo()在JavaScript中的区别是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

var foo=function(){}与函数foo()在JavaScript中的区别是什么