Web函数和内存问题

函数

函数对任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以在任何地方、任何时候调用执行。JavaScript中的函数使用function关键字来声明,后跟一组参数以及函数体。


理解函数最简单的办法就是拿数学里的函数作为例子,就比如y = f(x * 2)这个函数,当x的值为3的时候,y就是6, x 为 5的时候 y就是10。

JavaScript函数案例

function f (x){
	return x * 2;
}
var y = f(3);
console.log(y); //6

 这段代码的含义就相当于数学里面的 y = f(x * 2)这个函数。

 return 可以把值给返回,f (x)里面的x是参数,可有可无,也可以有多个。return 也是可有可无。

onclick事件

 在JavaScript里面有一种机制叫做事件机制,这个会在后面经常用到。今天提前学习其中的onclick事件。

在HTML的按钮标签加上onclick事件之后,就会触发函数。

<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script>
			function retu(){
				alert("返回");
			}
			
			function del(){
				confirm("您是否要删除?");
			}
			
			function repla(){
				prompt("请输入新密码!");
			}
		</script>
	</head>
	<body>
		<button onclick="retu()">返回</button>
		<button onclick="del()">删除</button>
		<button onclick="repla()">修改密码</button>
	</body>
</html>

垃圾收集

JavaScript具有自动垃圾收集机制,也就是说执行环境会负责管理代码执行过程中使用的内存。而在C和C++之类的语言中,开发人员的基本任务就是手工跟踪内存的使用情况,这样很容易造成许多问题。这个垃圾收集器的工作原理也很简单,其实就是找到那些不用的变量,然后释放掉它的内存。不需要像C++一样还要去delete。

当我们在一个函数中定义了一个局部变量,那么这个局部变量会在该函数执行的过程中存在。而这个过程中会为该局部变量在栈(或者堆)的内存上分配相应的空间以便存储他们的值。直到函数要执行结束了,这个时候局部变量就没有存在的必要,然后就会释放他们供内存使用。

标记清除

 JavaScript中最常见的垃圾清理方式是标记清除。当变量进入环境的时候会将这个变量标记为进入环境,当变量要离开的时候会被标记成离开环境。垃圾收集器会在运行的时候给存储在内存中的所有变量都加上标记,然后它会去掉环境中的变量以及被环境中的变量引用的变量标记。而在此之后再被加上标记的变量就会被视为准备删除的变量,原因是环境中的变量已经无法访问这些变量了。最后垃圾收集器完成内存清除的工作。销毁那些带标记的值并收回他们所占用的内存空间。

管理内存

虽然JavaScript已经具有了垃圾收集机制,但是在内存管理和垃圾收集面临的问题还是有点与众不同。最常见的问题就是分配给Web浏览器的可用内存数量通常要比分给桌面的要少。这样做的目的主要是为了防止运行JavaScript的网页耗尽全部系统内存而导致系统崩溃。内存限制问题不仅会影响给变量分配内存,同时还会影响调用栈以及在一个线程中能够同时执行的语句数量。所以说我们要确保占用最少的内存给浏览器最好的性能。

如果说一个数据已经不再有用了,则可以把他置为Null来释放这个引用。通常称之为解除引用。

  function fun(name){
	   var obj = new Object();
	   obj.name = name;
	   return obj;
   }
   var local = fun("hello world");
   alert(local);
   //手工解除引用
   local = null;

不过,这种做法并不意味着自动回收该值所占用的内存。解除引用的真正作用是让值脱离执行环境,方便垃圾收集器下次执行的时候将其回收。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值