Что-то кажется неправильным в следующем коде. Он объявляет функцию с eval
, называет ее - до тех пор все в порядке - и вызывает ее снова, но, хотя функция и, таким образом, получает ошибку.Область видимости и функций
var fn = function() {
return isTwo(2);
};
var check = function() {
eval("var isTwo = function(value) { return value == 2 }")
console.log(isTwo(2)); // returns true
console.log(fn()); // returns isTwo is not defined
}
check();
разворачивания check
функции сделанные вещи работает, но кажется неправильным. Почему использование функции eval
внутри функции должно изменить ее поведение?
var fn = function() {
return isTwo(2);
};
eval("var isTwo = function(value) { return value == 2 }")
console.log(isTwo(2)); // returns true
console.log(fn()); // returns true
'isTwo' не имеет значения в' fn' в первом коде. – elclanrs
Не используйте 'eval' для объявления переменных. Это плохая практика, и она запрещена в строгом режиме. – Oriol
@Oriol, вы не знаете, чего я пытаюсь достичь, поэтому вы можете указать, что какая-то статья в eval - это злое направление, но вы можете весить свои слова ^^ http://stackoverflow.com/questions/197769/ когда-is-javascripts-eval-not-evil –