英文:
Is anonymous function expression?
问题
是匿名函数表达式吗?如果是的话,为什么不能在 JavaScript 期望表达式的任何地方使用它?
示例:
const result = String(function () {
return 2;
});
返回的变量是什么:
'function () {\r\n return 2;\r\n}'
但我期望以字符串格式得到 2,因为如果匿名函数是表达式,它必须作为 String 函数的参数返回 2。
我尝试在 JavaScript 期望表达式的地方使用匿名函数,但没有得到我期望的结果。
英文:
Is an anonymous function expression? if it is, why can not we use it wherever JavaScript expects an expression?
Example :
const result = String(function () {
return 2;
});
what variable returns :
'function () {\r\n return 2;\r\n}'
but I expected to get 2 in string format because if anonymous function is expression it must return 2 as the argument for the String function
I tried to use an anonymous function where js expects an expression but i did not get the result what i expected
答案1
得分: 2
你忘了调用这个函数。一个函数定义本身只是一个定义。如果它从未被调用,它就不会返回值。
(将函数定义解释为字符串会导致你观察到的结果,即函数的文本。)
const result = String(function () {
return 2;
}()); // 请注意这里的额外 ()
console.log(result);
英文:
You forgot to invoke the function. A function definition by itself is just that, a definition. If it's never invoked, it won't return the value.
(And interpreting a function definition as a string results in the text of the function, which is the result you're observing.)
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-js -->
const result = String(function () {
return 2;
}()); // Note the additional () here
console.log(result);
<!-- end snippet -->
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论