[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: хранение функции в строке
12345
var a = 'function (a, b, c) { alert("1"); }';
var b = eval(a);



Выдает ошибку. В чем может быть ошибка?
depp
странный у вас код. правильнее наверное как то так:
var a = function (a, b, c) { alert("1"); };
var b = a;
b();

либо так:
var a = 'function x(a, b, c) { alert("1"); }';
var b = eval(a);
x();
Oyeme
var a = 'function (a, b, c) { alert("1"); }';
b = eval("("+a+")");
b(1,2,3);
12345
Oyeme
отлично! Спасибо!

Можешь объяснить, зачем тут эти скобки? Что-то не понимаю
Oyeme
Цитата (12345 @ 24.10.2016 - 13:49)
Oyeme
отлично! Спасибо!

Можешь объяснить, зачем тут эти скобки? Что-то не понимаю

Крублые скобочки говорят о том что выражение должно быть выполененно в текущем контексте функции,как function-expression

function test(arg){}

vs
var testExp = function test(arg) {};


Анонимная функция должна быть куда-то присовенна
Вы не можите вызвать функции по примеру function (arg) {} потому-что нет имени функции.
12345
Oyeme
спасибо за разъяснения
sergeiss
Можно было просто присвоить имя функции (в выражении внутри символьной строки) и потом вызывать её по этому имени, уже после выполнения eval.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.