Для всех элементов с атрибутом id
в джавасрипте создается глобальная переменная. Следующий пример во всех браузерах выдаст алерт с "DIV".
<html>
<head>
<script>
window.onload = function () {
alert(myDiv.tagName);
};
</script>
</head>
<body>
<div id="myDiv">test</div>
</body>
</html>
Это плохо, но в принципе не страшно, если вы:
- Избегаете создавать свои глобальные переменные.
- Не забываете объявлять свои переменные. Если вы забыли объявить переменную (var myVar), то джавасрипт считает, что это глобальная переменная (implied global variable).
7 комментариев:
да что вы )
попробуйте ввести в файрбаге
$$('*').filter(function($1){return $1.hasAttribute('id')}).map(function($1){
console.log(window[$1.id]);
})
Как вы объясните тогда поведение моего примера?
я не знаю, может быть тем, что вы не проверили в Файрфоксе ))))
подсказка - quirksmode )
Да, действительно, с включением доктайпа мой пример перестал работать в Файрфоксе, однако продолжает работать в IE, Opera и Safari.
Спасибо вам за информацию, я не знал что это может зависить от доктайпа.
да не за что, Степан, вам спасибо, что пишете
Стёпа - ты лучший! :)
Отправить комментарий