用JavaScript双重命名?

7 javascript vue.js

只是想问一个问题:在JavaScript中将函数命名为变量有什么理由吗?

(我的意思是使用Dep两次。只是在Vue.js中爬行并找到了这个)

var Dep = function Dep () {
    this.id = uid++;
    this.subs = [];
  };
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 4

变量名不是函数名;它只是一个恰好包含对该函数的引用的变量。

function关键字后面的“Dep”函数的名称。无论名为“Dep”的变量稍后发生什么,函数内部的“Dep”将始终是它自己的名称。

当然,在这种情况下,这根本不重要,因为该函数不引用自身。

不久前,这样做是一个好主意,以避免在浏览器控制台中报告来自“匿名函数”的错误。现代浏览器调试环境非常擅长获取合适的名称,但仍然存在无法获取适当名称的情况。

  • 嗯,这是函数声明与函数表达式的奇怪语义的一部分。在函数*表达式*中,如您发布的示例所示,该名称(“function”关键字后面的名称)被绑定到函数代码的词法范围中。无论外部“Dep”变量发生什么情况,函数内部“Dep”将始终引用该函数。在函数*声明*中,情况并非如此,这对我来说一直显得极其不合逻辑,但这就是事情的工作方式。 (2认同)