2013-09-06 2 views
0

Так что у меня следующая строка Javascript на моей странице:Является ли строка со значением «Ошибка» каким-то зарезервированным словом?

form.display.value = 'Error'; 

где дисплей ввод типа текста на моей странице:

<input type="text" id="calcDisplay" name="display" maxlength="25"> 

в Chrome это работает просто отлично делает значение входной элемент должен быть «Ошибка». Но в IE 10 и Firefox содержание ввода является следующим:

function Error() { [native code]} 

Может ли кто-нибудь объяснить, что здесь происходит и почему?

UPDATE: Это фактическая функция вызывается:

function compute(form) { 
    try { 
     form.display.value = eval(form.display.value); 
    } catch(e) { 
     form.display.value = 'Error'; 
    } 
} 

А вот видео из него, так что вы, ребята, не думаю, что я сошел с ума:

http://screencast.com/t/sq9xXrnf

+1

* «Является ли строка со значением« Ошибка »каким-то зарезервированным словом в Javascript?» *, Err, no, определенно нет. Это не то, как работают зарезервированные слова. Строка - это строка, нет зарезервированных строк. – meagar

+0

Так что же вызывает такое поведение? – Marko

+0

Как вы проверяете значение входа 'display'? – Jacob

ответ

2

Когда значение Error уже находится на входе, эта линия:

form.display.value = eval(form.display.value); 

... будет оцениваться с помощью функции Error, определенной вами ранее. Так что это должно происходить при втором вызове вашей функции compute.

Обратите внимание, что браузеры несовместимы с тем, как работает eval, поэтому вы видите различия браузера.

+2

Отложив в сторону тот факт, что OP не должен 'eval' произвольного ввода в первую очередь. – Doorknob

+0

@Doorknob Любое предложение о том, как сделать калькулятор на стороне клиента без использования eval? Как использование eval каким-либо образом опасно в моем приложении, учитывая тот факт, что цель - простой калькулятор? – Marko

Смежные вопросы