Каким образом вы можете передавать аргументы в функции в JavaScript? - PullRequest
1 голос
/ 07 марта 2020

Исходя из Python в некоторые JavaScript API-интерфейсы, я смущен некоторыми из синтаксиса. И я не могу найти ответ на весь шум случайной информации об объявлении функций.

В Python, вы можете смешивать заданные аргументы для функции, основанной на порядке и на основе имени: np.arange(1,5,step = 5)

Можете ли вы сделать что-то подобное в Javascript?

Если есть такая функция: ee.List.sequence(start,end, step, count) и только она нужны три из четырех аргументов, которые я действительно могу легко указать начало, конец, шаг, вот так: ee.List.sequence(1,100,2)

Но нужно ли мне использовать объектную нотацию для указания счетчика? ee.List.sequence({start=1,end=100, count=50})

Есть ли сокращение, как в Python, например: ee.List.sequence(1,100,{count=50}) или ee.List.sequence(1,100,,50)?

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Я нашел ответ в этом JavaScript учебном пособии .

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

Таким образом, есть два варианта:

  1. Задайте аргументы по порядку, не называя их.

    `ee.List.sequence(1,100,2)`
    
  2. Передайте их в именованном объекте (где внезапно порядок не имеет значения)

    `ee.List.sequence({start=1,end=100, count=50})`
    

Не существует смешанной нотации, такой как Python, имеет ee.List.sequence(1,100,{count=50})

НО есть обходной путь для 1 Если вы хотите использовать другую комбинацию аргументов, можно указать значения null для аргументов, которые пропущены. Таким образом, можно использовать следующее:

`ee.List.sequence(1,100,null,50)`
0 голосов
/ 08 марта 2020

Кажется, что вы на самом деле спрашиваете не о JavaScript как о языке, а о специфических c API. Итак, вот что нужно знать:

В JavaScript все аргументы являются необязательными. Другими словами, нет способа принудительно вызвать, что функция вызывается с правильным количеством или порядком аргументов. Вызывающий должен знать сигнатуру вызываемой функции и вызывать ее соответствующим образом. Также создатель функции должен быть готов к тому, что некоторые или все аргументы не будут переданы. Существует arguments массивоподобный объект, который есть во всех функциях, которые могут помочь с этим, но проверка входных данных также довольно проста. Вот пример:

// Here's an example of a function that does not explicitly declare any arguments
function foo1(){
  // However, arguments might still be passed and they can be accessed 
  // through the arguments object:
  console.log("Arguments.length = ", arguments.length);
  console.log(arguments);
}

foo1("test", "boo!"); // Call the function and pass args even though it doesn't want any

// ***********************************************

// Here's an example of a function that needs the first arg to work,
// but the seond one is optional
function foo2(x, y){
  if(y){
    console.log(x + y);
  } else {
    console.log(x);
  }
}

foo2(3);
foo2(4, 5); 

В JavaScript ваши функции могут принимать любой допустимый примитив или объект. Опять же, звонящий должен знать, что такое API, и правильно его называть:

function foo1(string1, number1, object1, string2){
  console.log(arguments);
}

foo1("test", 3.14, {val:"John Doe"}, "ing"); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...