Вопрос
При попытке использовать в теле функции её аргумент, возникает ошибка 'имя_аргумента' is already defined. Почему?
7 октября 2015 12:04
Переношу JQueryInputMask из 7.2 в 7.6. Есть следующая функция:
var isInputEventSupported = function(eventName) {
var el = document.createElement("input"),
eventName = "on" + eventName,
isSupported = (eventName in el);
if (!isSupported) {
el.setAttribute(eventName, "return;");
isSupported = typeof el[eventName] === "function";
}
el = null;
return isSupported;
}
var el = document.createElement("input"),
eventName = "on" + eventName,
isSupported = (eventName in el);
if (!isSupported) {
el.setAttribute(eventName, "return;");
isSupported = typeof el[eventName] === "function";
}
el = null;
return isSupported;
}
В 7.6 интерпретатор показывает ошибку 'eventName' is already defined на строке
eventName = "on" + eventName,
Нравится
1 комментарий
7 октября 2015 15:49
Евгений, данная ошибка возникает по причине использования формального параметра функции в блоке var. Таким образом интерпретатор считает, что Вы повторно пытаетесь объявить переменную с таким именем и подсказывает, что она уже объявлена.
Для устранения данного сообщения необходимо вынести присвоение из блока var:
var isInputEventSupported = function(eventName) { eventName = "on" + eventName; var el = document.createElement("input"), isSupported = (eventName in el); if (!isSupported) { el.setAttribute(eventName, "return;"); isSupported = typeof el[eventName] === "function"; } el = null; return isSupported; }
При этом необходимо вынести присвоение до блока var, поскольку его результат используется в другом выражении этого блока.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать