请问一个javascript函数的问题,谢谢

varf1=function(v){returnv;};这里变量f1指向后面的这个函数我懂得,可以f1(3)这种方式来调用这个函数,可是如果这样写varf1=functi... var f1 = function (v) {
return v;
};
这里变量f1指向后面的这个函数我懂得,可以f1(3)这种方式来调用这个函数,
可是如果这样写var f1 = function f2 (v) {
return v;
};,这种写法又算什么呢,这里的f2是做什么的,和第一种写法有什么区别啊,因为第二种写法中不能调用f2(3)这种方式,会报错的
展开
 我来答
百度网友84c11da
推荐于2016-10-02 · TA获得超过1108个赞
知道小有建树答主
回答量:695
采纳率:100%
帮助的人:403万
展开全部

这个涉及到js的对代码的解释原理。

在js中:

function a(){}

这样定义的函数 实际在运行过程中解释成了

var a = function(){}

也就是说对于定义的函数名变成了一个变量引用。

接着你的问题来了。


当然js解释器 解释代码

var f1 = function f2(){}

时,发现 function f2的引用已经创建(f1), 那么就不会生成

var f2 = function()P{

而是直接 忽略掉了f2这个函数名,即成了。

var f1 = function(){}


也就是说你的两种写法在js引擎来看,都是一样的。

都等于

var f1 = function(){}
xuebaotuxi
2014-10-19 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4196
采纳率:85%
帮助的人:1050万
展开全部
亲,这两者的区别主要是前面那个是匿名函数,后面那个是给这个函数取了一个具体的名字
追问
可是后面的写法,如果调用f2(3),会报错

ReferenceError: f2 is not defined
追答
第二种只能这样写function f2(v){return v;};
var f1=f2(3);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式