Обновить
0
Берестнев Дмитрий@Beresta

Пользователь

14
Подписчики
Отправить сообщение
Ничего не мешает :)
Но я бы на это полагаться не стал — в том же IE циклические ссылки (элемент-эвент-замыкание на элемент) GC научился собирать только в 9 версии.
В данном случае между null и undefined принципиальной разницы нет.
Вы это пробовали в FireBug/консоли или скриптом на нормальной странице?
Потому что в первом случае будет работать как вы ожидали (потому что выполняется через eval, а переменные объявленные в eval могут удаляться), а вот во втором — никакого удаления не произойдет (_xyz_ будет записано два раза).
Удалять нельзя не по каким-то там guidlines, а потому что в стандарте так написано — переменные помечаются аттрибутом {DontDelete}.

И еще обратите внимание на такой ньюанс:
var a = 10;
b = 20;
delete a;
delete b;
console.log(a); // 10
console.log(b); // ReferenceError: b is not defined

Так происходит потому, что b — не переменная, а свойство глобального объекта.
По стандарту JavaScript все переменные попадают в замыкание.
Вообще есть подозрение что ликает не JS GC, а реализация объекта XMLHttpRequest.
Такой подход практически ничем не отличается от приведенного выше (с callback функцией).
Имхо, проще так:
setInterval(function(){
     var xhr = new XMLHttpRequest();
     xhr.open('GET', 'json.txt', true);
     xhr.onreadystatechange = function() {
        if(this.readyState == 4 && this.status == 200) {
           console.log(this.responseText);
        }
     };
     xhr.send('');
     xhr = null;
}, 500);
Переменные удалять нельзя ;-)

Обычно делают xhr = null; в таких случаях.
Да, вы правы — баг именно в Chrome :)
Кстати, для выполнения кода в глобальном контексте можно создавать функции через конструктор Function:

var a = {};
(function() {
    new Function("this.alert('If you can read this I must be global!')")();
}).call(a);
Еще один пример использования оператора запятая — вызов Function Expression.

Function Declaration (будет ошибка):
function(){}()

Function Expression (как в jQuery):
(function(){})()

Function Expression (с оператором запятая):
1, function(){}()

P.S. На практике я бы использовать не стал :)
C 8 beta видимо все таки обманываю, а вот 7я точно в stable уже 2 недели:
googlechromereleases.blogspot.com/2010/10/stable-channel-update.html

А вот различаются ли и чем именно 7я stable и 7я beta — большой вопрос.
К этому можно добавить, что уже некоторое время как 7я версия хрома stable, а 8 beta :)
А я вот гадал — XaocCPS это, или же mixen :)
Помойму что то, что другое для AOL даже близко не направление бизнеса, а так, 0.1% от всего.
Да да да, очень хочется API потестировать, особенно на предмет автоматического перевода.
Оффлайн-версия конечно есть — тот же сайт, только запускается на локальном компьютере.
Шикарно! Некоторое время назад интересовался подобными коробочками — но везде либо не было Wi-Fi, либо стоили они запредельно, либо….

Цена конечно не минимально возможная, особенно если телевизоров в доме несколько — но вполне доступная.

Вообщем, я считаю надо брать.
Задвигание ее под раковину — это не нужное, лишнее, не эффективное действие ;)
Мне интересно, с каких это пор дату выхода первой бета-версии называют «датой релиза»?

Информация

В рейтинге
Не участвует
Откуда
Тула, Тульская обл., Россия
Зарегистрирован
Активность