令人困惑的调用 JavaScript 箭头函数的方式
Confusing way to invoke JavaScript arrow functions
我遇到了以下代码,它非常简单,因为它用于确定变量是否为字符串。
const is_string = value => {
return typeof value() === 'string';
};
let example = 'Hello, world!';
console.log(is_string(() => example)); // true
我的困惑与输入参数的使用有关。特别是第二行参数后面的括号:value()
和调用函数的方式:is_string(() => example)
。后者本身看起来像一个箭头函数。
我重写了代码
const is_string = (value) => {
return typeof value === 'string';
};
let example = 'Hello, world!';
console.log(is_string(example)); // true
它的作用几乎相同,那么使用第一个代码的符号的真正difference/advantage是什么?在特定情况下有用吗?
提前致谢。
版本:
本次讨论的关键词是 Lambda 表达式。我不完全知道代码将函数作为输入参数传递,我不熟悉该表示法。
在第一种情况下,您要传递一个函数并评估该函数的 return 值是否为字符串。
在后一种情况下,您正在测试参数本身。
如您的示例所示,它只是一个箭头函数,return是您已经拥有的变量,没有必要将其转换为箭头函数,这样做会产生(微小的)内存和性能开销。直接传递值无疑是更好的方法。
我遇到了以下代码,它非常简单,因为它用于确定变量是否为字符串。
const is_string = value => {
return typeof value() === 'string';
};
let example = 'Hello, world!';
console.log(is_string(() => example)); // true
我的困惑与输入参数的使用有关。特别是第二行参数后面的括号:value()
和调用函数的方式:is_string(() => example)
。后者本身看起来像一个箭头函数。
我重写了代码
const is_string = (value) => {
return typeof value === 'string';
};
let example = 'Hello, world!';
console.log(is_string(example)); // true
它的作用几乎相同,那么使用第一个代码的符号的真正difference/advantage是什么?在特定情况下有用吗?
提前致谢。
版本:
本次讨论的关键词是 Lambda 表达式。我不完全知道代码将函数作为输入参数传递,我不熟悉该表示法。
在第一种情况下,您要传递一个函数并评估该函数的 return 值是否为字符串。
在后一种情况下,您正在测试参数本身。
如您的示例所示,它只是一个箭头函数,return是您已经拥有的变量,没有必要将其转换为箭头函数,这样做会产生(微小的)内存和性能开销。直接传递值无疑是更好的方法。