Javascript-форум (https://javascript.ru/forum/)
-   Сайт Javascript.ru (https://javascript.ru/forum/site/)
-   -   Разное поведение запускаемого кода (https://javascript.ru/forum/site/14563-raznoe-povedenie-zapuskaemogo-koda.html)

x-yuri 21.01.2011 13:32

Разное поведение запускаемого кода
 
при использовании js run получается удалить переменную, объявленную с помощью var

<script>
var a = 1;   // создаем глобальную переменную
b = 2;   // создаем свойство в глобальном объекте (window)
alert( a );
alert( b );
alert( delete a );   // нельзя удалить глобальную переменную
alert( delete b );
try {
    alert( a );
} catch( e ){ alert(e); }
try {
    alert( b );
} catch( e ){ alert(e); }
</script>


var a = 1;   // создаем глобальную переменную
b = 2;   // создаем свойство в глобальном объекте (window)
alert( a );
alert( b );
alert( delete a );   // нельзя удалить глобальную переменную
alert( delete b );
try {
    alert( a );
} catch( e ){ alert(e); }
try {
    alert( b );
} catch( e ){ alert(e); }


в частности было бы интересно, в чем причина

Sweet 21.01.2011 13:46

Оффтоп: давно крутится в голове вопрос, а тут увидел и вспомнил:) Почему "Показать исходный код" есть, а свернуть его обратно нельзя???

Kolyaj 21.01.2011 13:50

В первом случае код запускается в iframe. Во втором ему делается eval. Переменные, созданные в eval-е, могут удаляться.

имхо, eval тут лучше не использовать (его нигде лучше не использовать). А использовать new Function. Тогда везде одинаково будет.

Илья Кантор 21.01.2011 13:50

Да, нельзя свернуть. Идея такая, что это не надо. Пролистывайте дальше =)

Удалять переменную при помощи delete вообще не следует.

Илья Кантор 21.01.2011 13:52

P.S. В новой реализации песочницы все в iframe. Но когда она будет прикручена.. Это вопрос :/

Kolyaj 21.01.2011 13:57

Кстати, насчёт сворачивания. Страницы, где есть каты, хреново открываются по хэшу, не на то место прокручиваются. Как я понимаю, каты сворачиваются после загрузки страницы, когда скрол уже встал на нужное сообщение, после сворачивания скрол, разумеется уезжает. Приходится кликать в адресную строку и нажимать enter, чтобы попасть, куда хотел.

Илья Кантор 21.01.2011 14:10

не мог бы ты пример с урлом дать и куда кликать? что-то не воспроизводится..

x-yuri 21.01.2011 14:13

Цитата:

Сообщение от Илья Кантор
Удалять переменную при помощи delete вообще не следует.

согласен, просто показывал, что с var - не то же самое, что без var

Kolyaj 21.01.2011 14:20

Цитата:

Сообщение от Илья Кантор
не мог бы ты пример с урлом дать и куда кликать? что-то не воспроизводится..

Оно не всегда воспроизводится. Примеры: все ссылки к новому сообщению в темы с катами. Если обнаружу более точные условия -- скажу.

Kolyaj 31.01.2011 12:12

http://javascript.ru/forum/offtopic/...html#post90543

Вот по этой ссылке не переходит к нужному сообщению.


Часовой пояс GMT +3, время: 19:39.