javascript - js中将函数声明赋值给一个变量,原来的函数名称为什么调用不了这个函数?
怪我咯
怪我咯 2017-04-11 09:13:31
[JavaScript讨论组]

js中将函数声明赋值给一个变量,原来的函数名称为什么调用不了这个函数?

function fn(){
    console.log("123");
}
fn();
var a=fn;
a();

var b=function c(){
    console.log("234");
}
b();
c();

输出信息如下:

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(4)
巴扎黑

这种命名函数表达式函数只能在函数体内有效。

var b=function c(){
    console.log("234");
    console.log(c);//函数体内是可以访问到的,外面不行。
}
怪我咯

简单来讲,

var b=function c(){
    console.log("234");
}

上面这种写法,后面的函数c是一个“函数表达式”,而不是一个“函数声明”,所以执行结果是把一个函数表达式的结果赋值给了b,而并没有声明函数c。

至于什么是表达式,什么是声明,就需要你自己查找资料继续学习了,在这里就不说了。

PHP中文网

c只是一个带名字的匿名函数,名字只能在函数内部作用域使用,指向当前正在执行的函数,类似arguments.callee

伊谢尔伦

你没有弄清函数表达式和函数声明的区别,c()之所以会报错,就是因为函数表达式只是将一个函数的指针赋给一个变量,让我们可以通过变量名直接调用函数(b()),而并不是声明了一个函数,所以直接用是会出错的。楼上那个说c只是一个带名字的匿名函数 都带名字了怎么还是匿名函数 --

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号