javascript - 为什么 JavaScript ES6 函数调用无法按预期工作

标签 javascript ecmascript-6

给出以下片段:

function output() {
  return "<p>normal function</p>";  
}

//first version
document.write(output());
//second version
document.write(() => {return "<p>arrow-function</p>"});

我想知道,为什么在上面的示例中正常函数会正确打印,但第二种方法只会像这样打印翻译后的函数声明:

"function () {return "

arrow-function
";} "

你能解释一下吗?

最佳答案

您实际上并没有像调用第一个函数那样调用第二个函数。如果您包装该函数并调用它,您将获得预期的结果。

function output() {
  return "<p>normal function</p>";  
}

//first version
document.write(output());
//second version
document.write(() => {return "<p>arrow-function</p>"});

//should be
document.write((() => {return "<p>arrow-function</p>"})());

关于javascript - 为什么 JavaScript ES6 函数调用无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290287/

相关文章:

javascript - 在 Convert.FromBase64String 中输入时 FileReader.readAsDataURL 结果返回格式异常

javascript - Google map Api - 将 google.maps.Place 传递给方向服务

javascript - 检测浏览器的自动填充何时打开

javascript - Force Masonry/similar to ignore flow and fill gaps 相反

javascript - 为什么我的自定义 jQuery `change` 事件被触发两次?

javascript - 如何在 try catch block 中使用 const

javascript - 创建具有动态值的 JS 数组

javascript - 使用 ES6 在嵌套循环中返回父匹配

javascript - 并行调用 async/await 函数

javascript - 在 ES6 中声明一个函数?