• Как исправить memory leak in IE при удалении и повторном создании переменной?

    monolithed
    @monolithed
    Переменные объявленные без спецификатора var становятся свойствами глобального объекта window (в серверной реализации global).
    К таким переменным допустимо применение инструкции delete:

    property = 1;
    
    top.property;    //1
    self.property;   //1
    window.property; //1
    


    Т.е. инструкция delete работает только со свойствами объектов.
    Например, допустимо удалять свойства встроенных объектов:

    Math.abs;        // function abs() { [native code] }
    delete Math.abs; // true
    Math.abs;        // undefined
    


    Соответственно, переменные объявленные со спецификатором var удалить нельзя:
    var variable = 10;
    delete variable; // false
    variable;        // 10
    


    PS: в консолях типа FF, Chrome, результат работы инструкции delete может быть не корректный.
    Ответ написан
    Комментировать