当名称被参数覆盖时访问自身的函数
Function accessing itself when name is overwritten by argument
通常,函数可以这样访问自己:
(function f() {
console.log(f); // Prints the function definition
}());
但是,当函数f
有一个参数也称为f
时,该参数优先:
(function f(f) {
console.log(f); // Prints 1
}(1));
在第二个示例中,当其中一个参数与函数同名时,我如何访问该函数?
[另外,我在哪里可以找到说参数应该优先于函数名的文档?)
你没有。只要遵循这个简单的规则
不要对任何你想要使用的变量进行遮蔽(或在更特定的范围内重新声明)。
注意:arguments.callee
将为此工作,但仅在某些实现中。它实际上正在被逐步淘汰,并且很可能在未来完全消失。
关于:
[另外,我在哪里可以找到说参数的文档应该优先于函数名吗?)
JavaScript具有词法/静态作用域。下面的代码包含两个标识符:
(function f(f) {
console.log(f); // Prints 1
}(1));
- 全局作用域中名为
f
的函数(可通过window.f
访问) - 全局函数
f
的参数,其本身名为f
。这个参数的作用域是函数,这是一个比外部作用域更具体的作用域。换句话说,参数的优先级不需要任何特殊规则;一个局部/内部/更特定的作用域总是遮蔽外部/不太特定的作用域。
可以使用参数。
( function f( f ) {
console.log( f ); // Prints 1
console.log( arguments.callee ); // Prints the function definition
}( 1 ) );
相关文章:
- 访问函数外部的变量
- 从嵌套函数访问函数属性
- 访问函数对象的上下文属性|如何
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 访问函数中的函数名称
- 访问函数'的属性
- 访问函数内部的Polymer方法
- 从另一个文件访问函数的返回值
- 如何从AngularJS外部访问函数
- 如何在 JavaScript 中访问函数中的其他属性值作为对象属性值
- 从require()'d文件访问函数
- 如何访问函数中的变量
- JavaScript 访问函数构造函数中的“this”
- 跨不同作用域访问函数
- 访问函数内部的变量
- jQuery插件+AMD=如何访问函数
- 如何在javascript中访问函数内部的相同变量名
- 可以'无论我做什么,都无法访问函数外的数组
- 如何从module.exports访问函数
- 无法't访问函数中的对象