javascript - 该函数的参数名称隐藏的函数名称
问题描述
警告:ECMAScript (ES5) 第 5 版禁止在严格模式下使用 arguments.callee()。避免使用 arguments.callee(),方法是给函数表达式命名或在函数必须调用自身的地方使用函数声明。[ MDN ]
在以下情况下如何引用o
自身内部的函数?
function o(o) { o(); }
o('not a function'); // TypeError: o is not a function
编辑:
为什么不重命名参数/函数?
- 我正在调试数千个混淆的 JavaScript 代码文件。
- 我个人的观点是,这个问题应该可以通过单独的反射来避免,而不是重构。
编辑:
在上述情况下,我正在寻找一种在自身内部引用函数的方法,或者寻找对可靠来源的解释或引用,以解释为什么参数名称会隐藏函数名称。
解决方案
将参数命名为另一个声明的变量具有的名称使其成为函数中的值。它忽略其他声明并使用参数中的声明。最好的办法是重命名它,但如果它在全局范围内,您可以使用window
(仅限 HTML 文档)访问它。只需键入window.functionName()
,它将正确引用。var
这仅在使用关键字在全局范围内定义时才有效!
//global scope
var a = 1
function b(a) {
console.log(a)
console.log(window.a)
}
b(2) //2 and then 1
function o(o) {
console.log(++a)
if(a < 5) window.o() //calls o() from global scope
}
o()
推荐阅读
- python - 使用 python 创建抄袭检测器
- c# - 输出到 [Word] 文档时,如何在 SSRS(RDLC 报告)的每一页上重复表组标题?
- augmented-reality - 修改模型以使用 ARBodyTrackingConfiguration (ARKit 3)
- ruby-on-rails - 无论谁登录,都会显示所有用户的条目
- html - 如何在 html 和 css 中获得缩小以适应导航栏
- python - 随机猜谜游戏
- powershell - 在 PowerShell 中,如何将内容设置为新的子目录?
- python - OSError:[WinError 123] 文件名、目录名或卷标语法不正确:[Python]
- javascript - 如何将图像导入 Next.js 组件并进行渲染?
- python - 如何删除空格?