推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
lisisi

匿名函数 function anonymous( ) 和直接写 function() 有区别吗?

  •  
  •   lisisi · May 8, 2020 via Android · 4076 views
    This topic created in 2225 days ago, the information mentioned may be changed or developed.
    12 replies    2020-05-09 18:13:11 +08:00
    silaike
        1
    silaike  
       May 8, 2020 via iPhone
    报错的时候有区别,前者能追踪到函数名称
    rabbbit
        2
    rabbbit  
       May 8, 2020
    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

    不过一般没人这么写,也就面试可能会考.
    xiaoriri666
        3
    xiaoriri666  
       May 8, 2020
    闭包
    LG3xFA6kpn88HxEW
        4
    LG3xFA6kpn88HxEW  
       May 8, 2020
    var a = function factorial(n) { return n <= 1 ? 1 : n * factorial(n - 1) };

    为匿名函数命名,可以在这个函数内部递归调用自身提供一个访问的方式
    zhw2590582
        5
    zhw2590582  
       May 8, 2020
    每次写到匿名函数,eslint 都会警告不要匿名,但有不想起名字,就用箭头函数代替了
    noe132
        6
    noe132  
       May 8, 2020
    > (function anonymous(){}).name
    < "anonymous"
    > (function (){}).name
    > ""
    AV1
        7
    AV1  
       May 8, 2020
    可以引用自己实现递归调用,并且不会把函数名暴露给当前作用域。
    julyclyde
        8
    julyclyde  
       May 8, 2020
    后者很正经,但是很不 javascript 风
    CodingNaux
        9
    CodingNaux  
       May 8, 2020
    为啥会有这种问题....
    azcvcza
        10
    azcvcza  
       May 8, 2020
    具名函数可以在函数里进行递归调用;具名函数可以在函数栈报错时显示名字 恩不是 at anonymours (xxx.js 53)
    来自 You don't know js
    lizz666
        11
    lizz666  
       May 8, 2020
    https://github.com/lizhongzhen11/lizz-blog/issues/82

    与这个函数名问题有点关系
    libook
        12
    libook  
       May 9, 2020
    有个问题,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”出了错。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5425 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 72ms · UTC 07:52 · PVG 15:52 · LAX 00:52 · JFK 03:52
    ♥ Do have faith in what you're doing.