Как работает вызов JavaScript функций? - PullRequest
0 голосов
/ 25 января 2020

Я студент и я учусь на языке более низкого уровня (Java), поэтому я очень смущен этим.

Например:

function sum (x){
let z = function (y) {return x + y };
return z;
}
sum(1)(2) // returns 3

Как работает sum(1)(2)? Я думаю, sum(1) возвращает z, после чего вызывается z(2), но я не совсем понимаю это. Кроме того, почему вы можете просто инициализировать z как function (y), не называя этой функции имя? Любые советы о том, как приблизиться к JavaScript с точки зрения языка более низкого уровня? Мне тяжело.

Ответы [ 3 ]

4 голосов
/ 25 января 2020

Как работает sum (1) (2)?

Вы звоните sum(1), а затем вызываете возвращаемое значение с помощью (2). В этом случае возвращаемое значение является функцией, поэтому вы можете вызвать ее. Это все равно что писать так:

function sum(x) {
  let z = function(y) {
    return x + y
  };
  return z;
}
let returnValue = sum(1);
console.log(returnValue);
console.log(returnValue(2));
Как видите, returnValue - это функция, как и ожидалось. Эта функция принимает 1 аргумент y и использует x из области создания первой функции, чтобы вернуть x + y.

Почему вы можете определить z как функцию без имени?

Когда вы используете синтаксис let z = something, вы используете выражение для определения something. Также как вы определите let a = 1, а не let a = myVar 1 (??), то же самое с функциями. Вам не нужно давать ему имя, потому что вы можете ссылаться на функцию как z. Понял?

Любые советы по приближению JavaScript

Если вы хотите учиться JS, я действительно рекомендую вам прочитать Вы не знаете Javascript , Я прочитал это после того, как мне показалось, что я знаю JS, и я обнаружил много вещей, о которых я не знал. Это также объясняет, как все работает в js.

Более того, существует множество сайтов, которые могут обучать и обучать вас. Просто Google.

ВАЖНОЕ ПРИМЕЧАНИЕ

java это не язык низкого уровня, а язык высокого уровня.

2 голосов
/ 25 января 2020

Вы правы, что sum(1) возвращает z, который является просто переменной, которой назначена анонимная функция.

В JS функции могут быть определены двумя способами, как объявление функции или функциональное выражение. Вы можете найти MDN для точных определений здесь .

То, что у вас есть, есть выражение функции, и выражения функции могут быть названы или анонимны.

Я бы также предложил читая больше о том, как функции в JS поддерживают свою собственную область, как z имеет ссылку на аргумент x.

Надеюсь, это даст вам больше понимания!

0 голосов
/ 25 января 2020

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

Go по ссылкам ниже, чтобы узнать о функциях в JavaScript.

https://javascript.info/object-methods

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...