Javascript функции передать строку

Как превратить строку в вызов функции JavaScript? [Дубликат]

Это, конечно, нужно сделать в JavaScript. Когда я делаю предупреждение на settings.functionName + ‘(‘ + t.parentNode.id + ‘)’; , похоже, все правильно. Мне просто нужно вызвать функцию, в которую она будет переведена. Условные обозначения:

settings.functionName = clickedOnItem t.parentNode.id = IdofParent 

13 ответов

Видя, как я ненавижу eval, и я не один:

var fn = window[settings.functionName]; if(typeof fn === 'function')

Изменить: В ответ на комментарий @Mahan: В этом конкретном случае settings.functionName будет «clickedOnItem» . Это означает, что во время выполнения переведите var fn = window[settings.functionName]; в var fn = window[«clickedOnItem»] , что даст ссылку на function clickedOnItem (nodeId) <> . Как только у нас есть ссылка на функцию внутри переменной, мы можем вызвать эту функцию «вызовом переменной», т.е. fn(t.parentNode.id) , которая равна clickedOnItem(t.parentNode.id) , что и требовалось OP.

/* Somewhere: */ window.settings = < /* [..] Other settings */ functionName: 'clickedOnItem' /* , [..] More settings */ >; /* Later */ function clickedOnItem (nodeId) < /* Some cool event handling code here */ >/* Even later */ var fn = window[settings.functionName]; /* note that settings.functionName could also be written as window.settings.functionName. In this case, we use the fact that window is the implied scope of global variables. */ if(typeof fn === 'function')

Я дал ответ машине из-за статьи. Все остальные говорили, что Eval был лучшим методом, а затем Machine присоединилась к статье, в которой def рассматривает элемент Eval в перспективе и заставляет меня отказаться от его использования.

Учитывая исходный вопрос, я думаю, что код «if (typeof . » не верен. Просто вызовите window [settings.functionName] (t.parentNode.id). Вы получите ошибку TypeError, если функция не существуют, и это лучше, чем молча глотать проблему и ничего не называть.

Источник

Javascript функции передать строку

Функция в JavaScript может принимать параметры. Параметры представляют способ передачи в функцию данных. Параметры указываются в скобках после названия функции.

Например, определим простейшую функцию, которая принимает один параметр:

function print(message) < console.log(message); >print("Hello JavaScript"); print("Hello METANIT.COM"); print("Function in JavaScript");

Функция print() принимает один параметр — message. Поэтому при вызове функции мы можем передать для него значение, например, некоторую строку:

Передаваемые параметрам значения еще называют аргументами.

При этом в отличие от ряда других языков программирования мы в принципе можем не передавать значения параметрам. Например:

function print(message) < console.log(message); >print();

Если параметру не передается значение, тогда он будет иметь значение undefined .

Если функция принимает несколько параметров, то они перечисляются через запятую:

function sum(a, b) < const result = a + b; console.log(result); >sum(2, 6); // 8 sum(4, 5); // 9 sum(109, 11); // 120

При вызове функции с несколькими параметрами значения передаются параметрам по позиции. То есть первое значение передается первому параметру, второе значение — второму и так далее. Например, в вызове:

Число 2 передается параметру a , а число 6 — параметру b .

Необязательные параметры и значения по умолчанию

Функция может принимать множество параметров, но при этом часть или все параметры могут быть необязательными. Если для параметров не передается значение, то по умолчанию они имеют значение «undefined». Однако иногда бывает необходимо, чтобы параметры обязательно имели какие-то значения, например, значения по умолчанию. До стандарта ES6 необходимо было проверять значения параметров на undefined:

function sum(x, y) < if(y === undefined) y = 5; if(x === undefined) x = 8; const z = x + y; console.log(z); >sum(); // 13 sum(6); // 11 sum(6, 4) // 10

Здесь функция sum() принимает два параметра. При вызове функции мы можем проверить их значения. При этом, вызывая функцию, необязательно передавать для этих параметров значения. Для проверки наличия значения параметров используется сравнение со значением undefined .

Читайте также:  Паттерн observer java пример

Также мы можем напрямую определять для параметров значения по умолчанию:

function sum(x = 8, y = 5) < const z = x + y; console.log(z); >sum(); // 13 sum(6); // 11 sum(6, 4) // 10

Если параметрам x и y не передаются значения, то они получаются в качестве значений числа 5 и 10 соответствено. Такой способ более лаконичен и интуитивен, чем сравнение с undefined.

При этом значение параметра по умолчанию может быть производным, представлять выражение:

function sum(x = 8, y = 10 + x) < const z = x + y; console.log(z); >sum(); // 26 sum(6); // 22 sum(6, 4) // 10

В данном случае значение параметра y зависит от значения x.

Массив arguments

При необходимости мы можем получить все переданные параметры через глобально доступный массив arguments :

function sum() < let result = 0; for(const n of arguments) result += n; console.log(result); >sum(6); // 6 sum(6, 4) // 10 sum(6, 4, 5) // 15

При этом даже не важно, что при определении функции мы не указали никаких параметров, мы все равно можем их передать и получить их значения через массив arguments .

Неопределенное количество параметров

С помощью оператора . (многоточие) мы можем указать, что с помощью параметра можно передать переменное количество значений:

function display(season, . temps) < console.log(season); for(index in temps)< console.log(temps[index]); >> display("Весна", -2, -3, 4, 2, 5); display("Лето", 20, 23, 31);

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

Весна -2 -3 4 2 5 Лето 20 23 31

Функции в качестве параметров

Функции могут выступать в качестве параметров других функций:

function sum(x, y) < return x + y; >function subtract(x, y) < return x - y; >function operation(x, y, func) < const result = func(x, y); console.log(result); >console.log("Sum"); operation(10, 6, sum); // 16 console.log("Subtract"); operation(10, 6, subtract); // 4

Функция operation принимает три параметра: x, y и func. func — представляет функцию, причем на момент определения operation не важно, что это будет за функция. Единственное, что известно, что функция func может принимать два параметра и возвращать значение, которое затем отображается в консоли браузера. Поэтому мы можем определить различные функции (например, функции sum и subtract в данном случае) и передавать их в вызов функции operation.

Источник

Как в функцию передать параметр строку?

Можно ли передать строку, как параметр?
пример обработчик события, хочу в нем кроме параметров (чисел), передать строку.

Читайте также:  Create php admin panel

Как передать параметр из jsp java страницы в функцию javascript и возвратить обратно другой параметр
На jsp странице имеется динамически формируемая таблица с чекбоксами в первой колонке каждой строки.

Как передать в функцию параметр объекта hr (линия) для её прорисовки
Здравствуйте! Подскажите пожалуйста как мне передать в мою функцию параметр объекта hr (линия).

Лучший ответ

Сообщение было отмечено poss как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
script> function loadXMLDoc(str) { // "ПАРАМЕТР СТРОКА" var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","content.php?page="+str,true); // "ПАРАМЕТР СТРОКА" xmlhttp.send(); } script> h2>AJAXh2> button type="button" onclick="loadXMLDoc('index ept!')">Главнаяbutton> // "ПАРАМЕТР СТРОКА" div id="myDiv">div>

Источник

JavaScript: Параметры функций

Функции могут не только возвращать значения, но и принимать их в виде параметров (их ещё называют аргументами). С параметрами функций мы уже сталкивались много раз:

// Принимает на вход параметр любого типа console.log('я параметр'); // Принимает на вход два строковых параметра // первый – что ищем, второй – на что меняем 'google'.replace('go', 'mo'); // moogle // Принимает на вход два числовых параметра // первый – начальный индекс (включая), второй – конечный индекс (не включая) 'hexlet'.slice(1, 3); // ex 

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

// Передача параметров напрямую без переменных getLastChar('Hexlet'); // t // Передача параметров через переменные const name1 = 'Hexlet'; getLastChar(name1); // t const name2 = 'Goo'; getLastChar(name2); // o 

Из описания и примеров кода мы можем сделать следующие выводы:

  • Нам нужно определить функцию getLastChar()
  • Функция должна принимать на вход один параметр строкового типа
  • Функция должна возвращать значение строкового типа

Разберем его. В скобках указывается имя переменой text , которая служит нам параметром. Имя параметра может быть любым. Главное, чтобы оно отражало смысл того значения, которое содержится внутри. Мы могли бы определить функцию и вот так:

Конкретное значение параметра будет зависеть от вызова этой функции.

// Внутри функции str будет равна 'hexlet' getLastChar('hexlet'); // t // Внутри функции str будет равна 'code' getLastChar('code'); // e // Внутри функции str будет равна 'Winter is coming' // Имя переменной снаружи не связанно с именем переменной в определении функции const text = 'Winter is coming'; getLastChar(text); // g 

Точно таким же образом можно указывать два, три и более параметров. Каждый параметр отделяется от другого запятой:

// функция по нахождению среднего числа const average = (a, b) => < return (a + b) / 2; >; average(1, 5); // 3 average(1, 2); // 1.5 

Тоже самое относится и к методам. Они могут требовать на вход любое количество параметров, которое им нужно для работы:

// первый параметр – что ищем // второй параметр – на что меняем 'google'.replace('go', 'mo'); // moogle 

Для создания таких функций и методов, нужно в определении указать нужное количество параметров через запятую, дав им понятные имена. Ниже пример определения функции replace() , которая заменяет в слове одну часть строки на другую:

const replace = (text, from, to) => < // здесь тело функции, но мы его // опускаем, чтобы не отвлекаться >; replace('google', 'go', 'mo'); // moogle 

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

// ничего не заменилось, // так как внутри google нет mo replace('google', 'mo', 'go'); // google 

Задание

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

Функция принимает два параметра:

Пример того, как должна работать написанная вами функция:

// Передаём текст напрямую // Обрезаем текст, оставляя 2 символа truncate('hexlet', 2); // he. // Через переменную const text = 'it works!'; // Обрезаем текст, оставляя 4 символа truncate(text, 4); // it w. 

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

 const word = 'welcome'; // Передавать параметры в метод можно через переменные const index = 3; word.slice(0, index); // wel 

С точки зрения проверочной системы не имеет значения, каким из способов будет реализована функция truncate() внутри, главное – чтобы она выполняла поставленную задачу

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

  • Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.

В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.

Полезное

Источник

Оцените статью