Цитата:
// здесь myvar из переменной становится константой для ЭТОЙ функции!!!
|
Верно, становится. Но именно поэтому теряется смысл нагромождения
eval. Вы определяете обработчик, определить его можно однажды (потом - лишь переопределить) и целиком. Поэтому ваша переменная, ставшая константой ничем не отличается от внешней переменной, видимой из обработчика - глобальной. Если предполагать, что myvar внешняя относительно контекста обработчика, то отпадает надобность в
eval, который, Вы верно выразились, добавляет "некрасивость" решению.
Так ведь проще:
Код:
var myvar = 'myvar_value';
document.getElementById('element_id').onmouseover = function(e) {
alert(myvar);
return;
};