JavaScript如何处理名称以()?结尾的函数?例如,考虑以下代码:
var foo() = function () { }; // The empty function
var bar = function(foo) { var myVariable = foo(); };
Run Code Online (Sandbox Code Playgroud)
似乎有两种可能的解释foo();:
foo.这将指定myVariable返回的值foo.foo()作为首先定义的函数的名称.这将指定myVariable空函数.这甚至是合法代码吗?如果是这样,那么规则是什么?
这甚至是合法代码吗?
没有:
var foo() = function () { };
Run Code Online (Sandbox Code Playgroud)
应该:
var foo = function () { };
Run Code Online (Sandbox Code Playgroud)
如果是这样,那么规则是什么?
在这种情况下,foo参数将具有优先权,因为它在内部范围中定义而不是foo函数.所以它确实是一个范围问题:变量定义在哪里.解释器首先查看代码的最内层范围,然后在外部,...直到它到达全局范围(窗口对象).
因此,例如,以下代码的结果将123在此实时演示中看到:
var foo = function () { alert('we are in the foo function'); };
var bar = function(foo) { var myVariable = foo(); alert(myVariable); };
bar(function() { return 123; });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |