Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么新函数()返回这个输出?_Javascript_Function - Fatal编程技术网

Javascript 为什么新函数()返回这个输出?

Javascript 为什么新函数()返回这个输出?,javascript,function,Javascript,Function,我正在读Cody Lindley的《Javascript启蒙》一书的第4章:功能 我在玩函数,想知道为什么在fiddle addNumbersA中返回匿名num1,num2,/**/而不是返回函数 谁能告诉我为什么会这样 编辑: 1.我想问的是,为什么logging addNumbersA不按它必须做的那样返回一个函数。 2.当我使用typeofaddNumbersA时,我得到的是一个函数,而不是一个函数——而addNumbersB返回函数 如果我不够清楚,请道歉 console.log(add

我正在读Cody Lindley的《Javascript启蒙》一书的第4章:功能

我在玩函数,想知道为什么在fiddle addNumbersA中返回匿名num1,num2,/**/而不是返回函数

谁能告诉我为什么会这样

编辑: 1.我想问的是,为什么logging addNumbersA不按它必须做的那样返回一个函数。 2.当我使用typeofaddNumbersA时,我得到的是一个函数,而不是一个函数——而addNumbersB返回函数

如果我不够清楚,请道歉

console.log(addNumbersB); // logs function() correct!
这将不会运行您期望的函数

这是:

上面返回4,因为我们调用函数并传递两个数字,然后由函数相加


您给出的第一个示例是一个很少用于日常编码的方法,它从表示有效代码的字符串创建函数。

原因控制台。logaddNumbersA;返回:

function anonymous(num1,num2
/**/) {
return num1 + num2
} 
function (num1, num2) {
    return num1 + num2;
} 
因为它是一个函数表达式。function关键字用作表达式时,可以创建函数值。函数值可以做其他值可以做的所有事情,您可以在任意表达式中使用它,而不仅仅是调用它。可以将函数值存储在新位置,将其作为参数传递给函数,等等

类似地,console.logaddNumbersB;返回:

function anonymous(num1,num2
/**/) {
return num1 + num2
} 
function (num1, num2) {
    return num1 + num2;
} 

您可以在chrome开发工具中测试这一点,也许一些Inspector/js repl有不同的快捷方式,因此您可能无法获得精确的输出,即,只需在Firebug中获取“函数”。

函数是函数的构造函数

当您将函数定义为函数构造函数的实例时,它不会被编译,而是存储为运行时字符串。这就是它显示为函数定义而不是函数对象的原因


它们的功能相同,只是因为它是在执行时编译的,它只有全局闭包,除了它自己的局部变量外,它不知道局部闭包。

这本书没有告诉你吗?我不明白你的问题,但是使用标准控制台可能会更有启发性。删除firebug并键入F12@JoakimM不,这本书没有告诉我不幸的是,不是那些被否决的人,但首先,你的答案有语法错误。我不是在问这个。我在问为什么它不把函数作为对象的类型返回给我。这是正确的答案。