Javascript 以()结尾的函数名
JavaScript如何处理名称以Javascript 以()结尾的函数名,javascript,Javascript,JavaScript如何处理名称以()结尾的函数?例如,考虑下面的代码: var foo() = function () { }; // The empty function var bar = function(foo) { var myVariable = foo(); }; 对于foo(),似乎有两种可能的解释表示: 执行参数foo。这将为myVariable分配foo的返回值 将foo()作为最初定义的函数名。这将分配myVariable空函数 这是法律法规吗?如果是,规则是什么?名
()
结尾的函数?例如,考虑下面的代码:
var foo() = function () { }; // The empty function
var bar = function(foo) { var myVariable = foo(); };
对于foo(),似乎有两种可能的解释代码>表示:
执行参数foo
。这将为myVariable
分配foo
的返回值
将foo()
作为最初定义的函数名。这将分配myVariable
空函数
这是法律法规吗?如果是,规则是什么?名称中不包含()
。您可能会遇到语法错误。您可以找到一些命名规则。在javascript中,括号表示执行。因此,代码将失败,因为它将在第一行查找函数foo。标识符可能不包含任何括号,因此第一条语句是非法的。但是,第二种方法很好,myVariable=foo()
执行foo
参数并指定返回值
这是法律法规吗
否:
应该是:
var foo = function () { };
如果是,规则是什么
在这种情况下,foo
参数将具有优先权,因为它是在内部作用域中定义的,而不是在foo
函数中定义的。所以这实际上是一个范围问题:变量定义在哪里。解释器首先查看代码的最内部范围,然后查看外部范围。。。直到它到达全局范围(窗口对象)
例如,以下代码的结果将是123
,如图所示:
你真的是说“我可以传递函数作为引用吗?”如果是,那么答案是肯定的:
var foo = function() { return 2; }
var bar = function(fn){ return fn(); }
var two = bar(foo);
尝试使用chrome的javascript控制台或firebug
var foo = function () { alert('we are in the foo function'); };
var bar = function(foo) { var myVariable = foo(); alert(myVariable); };
bar(function() { return 123; });
var foo = function() { return 2; }
var bar = function(fn){ return fn(); }
var two = bar(foo);