Запутанный способ вызова функций стрелок JavaScript - PullRequest
0 голосов
/ 18 мая 2019

Я наткнулся на следующий код, который очень прост, поскольку он предназначен для определения, является ли переменная строкой или нет.

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

, и он делает то же самое, так в чем же реальная разница / преимущество использования нотациипервого кода?Полезно ли это в определенных случаях?

Заранее спасибо.

ИЗДАНИЕ:

Ключевым словом в этом обсуждении является Лямбда-выражение .Я не был полностью осведомлен о том, что код передавал функцию в качестве входного параметра, я не был знаком с этой нотацией.

1 Ответ

2 голосов
/ 18 мая 2019

В первом случае вы передаете функцию и оцениваете, является ли возвращаемое значение этой функции строкой.

В последнем случае вы проверяете сам аргумент.

Как показано в ваших примерах, когда это просто функция со стрелкой, которая возвращает переменную, которая у вас уже есть, нет смысла превращать ее в функцию со стрелкой, и это приводит к (крошечным) небольшим потерям памяти и производительности. Передача значения напрямую, несомненно, является лучшим подходом.

...