javascript - 函数自引用

标签 javascript

在 JavaScript 中,函数只是可以调用的对象。那么函数体引用实际函数对象的最简单方法是什么?

this 可用于引用调用函数(或更具体地说,方法)的包含对象。但我相信 this 永远不会指代实际的函数对象本身。

显然,bindcallapply 可用于更改 this 的值功能。或者 bind 可用于创建函数的一个版本,该版本始终将对自身的引用作为其第一个参数。

但是有没有更简单的方法呢?我怀疑不是,但我可能是错的。

最佳答案

我想不出命名函数表达式不能替代匿名函数表达式的情况。因此,如果您要从其内部调用它(即,如果您要使用递归),我建议命名该函数:

function myFunc(someArg) {
    ...
    ...
    myFunc(someNewArg);
}

即使它是一个引用也能工作:

var myFunc = function(someArg) {
    ...
}

如果不想污染命名空间,甚至可以使用递归 IIFE(立即调用的函数表达式):

(function myFunc(arg) {
    ...
    myFunc(someOtherArg);
})(0); //some initial value

此外,做这样的事情:

someOtherFunction(function myFunc(arg) {
    ...
    myFunc(otherArg);
});

同样有效,不会污染命名空间。

关于javascript - 函数自引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26283868/

相关文章:

javascript - 为什么点击时我的颜色没有变化?

javascript - Ng-Click 未被触发

javascript - 使用 JavaScript,是否可以从传出的获取请求中捕获正文有效负载?

javascript - Vue 自定义指令

javascript - 一键 2 个 anchor

javascript - 按值对对象属性进行排序

javascript - AngularJS 1.2 查看离开/进入动画?

javascript - 在node.js中读取WAV音量数据

javascript - 使用 CSS transform scale() 在不裁剪的情况下放大元素,保持滚动

javascript - 在向下滚动时添加类并在添加类时替换类