1
silaike 2020-05-08 09:53:50 +08:00 via iPhone
报错的时候有区别,前者能追踪到函数名称
|
2
rabbbit 2020-05-08 09:59:50 +08:00
var a = function a() {
console.log(a) } var b = a a = 1 b() // ƒ a() ------------------ var a = function() { console.log(a) } var b = a a = 1 b() // 1 不过一般没人这么写,也就面试可能会考. |
3
xiaoriri666 2020-05-08 10:04:03 +08:00
闭包
|
4
l1nyanm1ng 2020-05-08 10:18:24 +08:00
var a = function factorial(n) { return n <= 1 ? 1 : n * factorial(n - 1) };
为匿名函数命名,可以在这个函数内部递归调用自身提供一个访问的方式 |
5
zhw2590582 2020-05-08 11:08:17 +08:00
每次写到匿名函数,eslint 都会警告不要匿名,但有不想起名字,就用箭头函数代替了
|
6
noe132 2020-05-08 11:43:30 +08:00
> (function anonymous(){}).name
< "anonymous" > (function (){}).name > "" |
7
DOLLOR 2020-05-08 12:06:43 +08:00
可以引用自己实现递归调用,并且不会把函数名暴露给当前作用域。
|
8
julyclyde 2020-05-08 12:08:59 +08:00
后者很正经,但是很不 javascript 风
|
9
CodingNaux 2020-05-08 12:22:35 +08:00
为啥会有这种问题....
|
10
azcvcza 2020-05-08 13:45:22 +08:00
具名函数可以在函数里进行递归调用;具名函数可以在函数栈报错时显示名字 恩不是 at anonymours (xxx.js 53)
来自 You don't know js |
11
lizz666 2020-05-08 16:22:23 +08:00
|
12
libook 2020-05-09 18:13:11 +08:00
有个问题,function anonymous( ) 是不是就不算匿名函数了。。。
> (function(){haha})() Uncaught ReferenceError: haha is not defined at repl:1:13 > (function a(){haha})() Uncaught ReferenceError: haha is not defined at a (repl:1:15) > (a=function(){haha})() Uncaught ReferenceError: haha is not defined at a (repl:1:15) 注意看错误提示的内容是不一样的,后面两个会告诉你是“函数 a”出了错。 |