javascript 释放变量

JavaScript 释放变量

在Javascript是可以使用“delete”来手动删除变量,通过这样的方法让GC(Garbage collection)来回收内存,但在JS中并不是所有的变量都可以被删除的。

1、var 声明的 全局变量“a” 在使用 “delete a” 后 输出值依然为 “1”。

2、未使用var 声明的全局变量“b” 成为了  “window”的属性,在使用 “delete b” 后 输出 报错 “b is not defined”。

3、在对象或者 构造器中的 变量,在使用 “delete” 后输出 “undefined”。

demo:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>javascript 释放变量</title>
    </head>
    <body>
        <script type="text/javascript">
            var a = 1;
            b = 2;
            var function_name = function (argument) {
                this.c = 3;
            }
            var d = new function_name();
            var e = {"f" : 4};

            delete a;
            delete b; // delete window.b;
            delete d.c;
            delete e.f;

            console.log(a);  // 1
            console.log(b);  // Uncaught ReferenceError: b is not defined
            console.log(d.c); // undefined
            console.log(e.f); // undefined
        </script>
    </body>
</html>
时间: 2024-10-13 11:38:03

javascript 释放变量的相关文章

JavaScript 中变量、作用域和内存问题的学习

这是我学习JavaScript的第二篇文章,之前做过几年的Java开发,发现JavaScript虽然也是面向对象的语言但是确实有很多不同之处.就本篇博客,主要学习总结一下最近学习到的JavaScript的知识,其中有些是网络上的,不过对于理解JavaScript,和在工作总是会很实用的,所以总结了下来: 那么就开始吧,首先是变量 在JavaScript中变量分为两种:一种是基本类型,基本类型值在内存中占用固定大小的空间,因此被保存在栈内存中.从一个变量向另一个变量复制基本类型的值,会创建这个值的

Javascript的变量与delete操作符

原文:http://charlee.li/javascript-variables-and-delete-operator.html 刚刚看到一篇好文(原文链接), 对Javascript中的delete操作符分析得很透彻.在这里简单地介绍一下内容. 虽然是一个小小的delete操作符,其行为却异常复杂. # Javascript的变量 实际上Javascript中,变量 = 对象属性,这是因为 Javascript 在执行脚本之前 会创建一个Global对象,所有的全局变量都是这个Global

JavaScript的变量及作用域

JavaScript 的变量与其他语言的变量有很大区别. JavaScript 变量是松散型的(不强制类型)本质,决定了它只是在特定时间用于保存特定值的一个名字而已. 由于不存在定义某个变量必须要保存何种数据类型值的规则,变量的值及其数据类型可以在脚本的生命周期内改变. 一.基本类型和引用类型的值 1.ECMAScript 变量可能包含两种不同的数据类型的值:基本类型值和引用类型值. 2.基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置. 3.而引用类型值则是指

JavaScript基础——变量、作用域和内存问题

按照ECMA-262的定义,JavaScript的变量与其他语言的变量有很大区别.JavaScript变量松散类型的本质,决定了它只是在特定时间用于保存特定值的一个名字而已.由于不存在定义某个变量必须要保存何种数据类型值的规则,变量的值即其数据类型可以在脚本的声明周期内改变.尽管从某种角度看,这可能是一个既有趣又强大,但同时又容易出问题的特性,但JavaScript变量实际的复杂程度远不止如此. 基本类型和引用类型的值 ECMAScript变量可能包含两种不同数据类型的值:基本类型和引用类型值.

轻松学习JavaScript五:JavaScript的变量和数据类型

对于一们编程语言,肯定包含变量和数据类型.今天我们就来看看JavaScript脚本语言的变量和数据类型.相对 于其他的Java,C++等高级程序语言,JavaScript显得很简单. 一变量 JavaScript的变量是松散类型的,所谓松散就是用来保存任何类型的数据.变量是存储信息的容器.定义变量时 要使用var操作符(var是关键字),后面跟一个变量名(变量名是标识符).变量也就是初始化后可以再次改变的量. 那么我们来看看实例: <span style="font-size:18px;&

[转]深入理解JavaScript的变量作用域

1.JavaScript的作用域链 2.函数体内部,局部变量的优先级比同名的全局变量高. 3.JavaScript没有块级作用域. 4.函数中声明的变量在整个函数中都有定义. 5.未使用var关键字定义的变量都是全局变量. 6.全局变量都是window对象的属性 在学习JavaScript的变量作用域之前,我们应当明确几点: JavaScript的变量作用域是基于其特有的作用域链的. JavaScript没有块级作用域. 函数中声明的变量在整个函数中都有定义. 1.JavaScript的作用域链

javascript中变量声明要早于赋值

javascript中变量声明要早于赋值:这里只做简单的现象介绍,具体不做深究,先看一段代码实例: var webName="蚂蚁部落"; document.write(webName); 对于这段代码应该没有任何问题,输出结果是:蚂蚁部落.再来看一段代码: document.write(webName); var webName="蚂蚁部落"; 按照代码是顺序执行的理论,以上代码应该会报错才对,但是这里输出结果却是:undefined.这说明在执行输出之前,变量已

javascript 判断变量 是否为空null,undefined, 空数组,空对象(空Object),字符串是否为空或全由空白字符组成,数字是否为0,布尔是否为false。

javascript 判断变量 是否为空null,undefined, 空数组,空对象,空Object,字符串是否为空或全由空白字符组成,数字是否为0,布尔是否为false.由于Object没有length用 Object.keys()适用于数组,对象 返回可枚举的实例属性名组成的数组来判断是否为空. 利用逻辑判断中or (||)只要有一项为真则不再计算下一个表达式 来实现不管传入的参数是何种类型.只要符合我对空的定义即返回true. 1 function IsNothing(e) { 2 va

第九章 Javascript之变量作用域

分析: 无论是强类型语言c#.c++.java等语言,还是弱类型语言如Javascript,所有变量可以抽象为两种类型,即局部变量和全局变量. 全局变量:整个作用域可见. 局部变量:局部可见,退出作用域,就被GC销毁,回收空间. Code分析: //局部变量 function PartVary() { var n = 10; //表示局部变量,外部不可访问 } PartVary(); alert(n);//error //全局变量 function AllVary() { n = 10 //表示