介绍
本篇文章给大家分享的是有关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中的区别是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。