JavaScript中的函数声明
如果我们写JavaScript中的函数声明,javascript,Javascript,如果我们写 mase_me= new Function('','return \'aaa\';'); alert(mase_me.toString()); 然后显示函数匿名(){return'aaa';}。此外,我试图调用函数,我正在编写 alert(anonymous()); 但我有一个错误 [18:23:40.220] ReferenceError: anonymous is not defined @ http://fiddle.jshell.net/_display/:33 我被排
mase_me= new Function('','return \'aaa\';');
alert(mase_me.toString());
然后显示函数匿名(){return'aaa';}
。此外,我试图调用函数,我正在编写
alert(anonymous());
但我有一个错误
[18:23:40.220] ReferenceError: anonymous is not defined @ http://fiddle.jshell.net/_display/:33
我被排除在外,alert(anonymous())代码>将显示aaa
,因为如果我写
made_me=function aaa() { return 'aaa'; }
alert(made_me.toString());
然后将显示函数aaa(){return'aaa'}
和
alert(aaa());
每当您执行新函数()
,它都将显示aaa
,称为匿名函数。它们用于关闭。但是,您应该始终使用文本,例如[]
、“
”和函数(){}
,而不是新函数()
要调用函数,您应该执行mase__me()
,而不是anonymous()
,因为anonymous
是这样构造的任何函数的名称。anonymous
不是函数的名称。它只是一个指示函数没有名称的指示器,如果您愿意,它是一个placehoder
虽然不能按名称调用匿名函数,但可以使用对它的引用来调用它。在mase\u me
变量中有这样一个引用:
alert(mase_me()) // alerts 'aaa'
调用它的唯一其他方法是在它构建时立即调用它,但我怀疑它对您的情况是否有帮助:
alert((new Function('','return \'aaa\';'))());
anonymous
是函数名,而不是包含函数引用的变量名,即mase\u me
您可以看到这一点,因为新函数(“”,'return'aaa\';')。name==“anonymous”
当您这样做时:
function aaa() { return 'aaa'; }
它实际上等同于:
var aaa = function aaa() { return 'aaa'; }
(注意,这不完全相同:)
当然,这与以指定明确名称的方式创建的函数相同:
var a = new Function("b", "return 'aaa';");
a(); // works
b(); // doens't work (not defined)
a.name === "b" // true
匿名的意思是“未命名”。。。Javascript告诉您函数没有名称。因此,您不能只使用anonymous
,就好像它是有趣的函数名一样,它必须是Moz独有的东西。在Chrome中,newfunction().name
和(Function(){}.name
都是空字符串。在Moz中,newfunction().name
是“匿名的”,但(Function(){})。name
是一个空字符串。奇怪。事实上,我自己也很惊讶,Firefox中的new Function()
的名称等于“匿名”
,我希望它是一个空字符串,就像(Function(){})。name
!在我看来,Chrome中的行为更为明智。