Тема: [не питання]Про eval
Я вже бачив дивну поведінку JS
але сьогодні знайшов ще дещо
В цьому куску коду є дві змінних 'myValue' одна локальна інша глобальна, зрозуміло що відповідь буде "1" тому що локальна змінна не впливатиме на глобальну
var myValue = 1;
(function() {
var myValue = 1;
eval('myValue = 2');
})();
alert(myValue);
а от майже такий самий код
var myValue = 1;
(function() {
var myValue = 1;
refEval = eval;
refEval('myValue = 2');
})();
alert(myValue);
але відповідь тут, вже буде "2"
так працювати не буде глобально
(eval)('something')
але можна застосовувати знак коми, отак
(0,eval)('something')
щоб код виконувався глобально
чи будь що інше що поверне eval
(true&&eval)('something')
Я трохи про це почитав та дізнався що є прямий доступ до eval і через посилання, так ось, (0,eval) якраз дає це посилання. Якщо так виконувати код (0,eval)('something') то це буде виконуватися в глобальній області.
тут можна почитати більше про eval