var a;
function a(){}
console.log(a)
答案是 function a(){}
很疑惑的是 函数声明里面的函数名不是可以随便取吗,也可以不取,做匿名函数。比如
function(){} 这样
或者
var b = function a(){}如此
所以为啥 上面的答案是function a(){}
我觉得function a(){} 这里的 a 和var a 里的 a只是凑巧名字一样而已 为什么会赋值?
var a;
function a(){}
console.log(a)
答案是 function a(){}
很疑惑的是 函数声明里面的函数名不是可以随便取吗,也可以不取,做匿名函数。比如
function(){} 这样
或者
var b = function a(){}如此
所以为啥 上面的答案是function a(){}
我觉得function a(){} 这里的 a 和var a 里的 a只是凑巧名字一样而已 为什么会赋值?
函数声明会覆盖变量声明,你这里只是声明了变量,a和后面的函数声明重名了,于是就被覆盖了。
赋值操作会覆盖声明操作,比如这样——
var a = 0;
function a(){};
console.log(a); //0
虽然函数的声明覆盖了变量的声明,但是变量的赋值操作又覆盖了函数的声明,所以最后的结果是0。
关于第一个问题,“函数声明里面的函数名不是可以随便取吗,也可以不取,做匿名函数。比如:function(){}”。
你确定这个代码是可以执行的么? - function(){}
并不是有效的Javascript
代码吧?
当你希望使用匿名函数时,必须将其赋值给一个变量,或者用在iife
(Immediately Invoked Function Expression),如:
//赋值
var hello = function (){ };
//iife
(function (){ }());
我觉得function a(){} 这里的 a 和var a 里的 a只是凑巧名字一样而已 为什么会赋值?
这话从何而来?怎么还整出赋值来了?我猜你可能把栗子理解成这样了:
var a = function (){};
console.log(a);
其实不是这样子的,没这么先进。
这么理解会不会好点儿?
var a;
var a = function(){};
console.log(a);
虽然变量名都叫
a
,但明显下面那个覆盖了上面那个,所以最后打印出来的是函数,不是undefined
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
手机APP上的给不了链接。
你点开我的主页,看我最近的一次回答。看完不懂私信我,说到你懂为止。
链接 https://segmentfault.com/q/1010000005921127/a-1020000005921922