Web基本笔记~11.函数和内存问题

Web基本笔记~11.函数和内存问题

上一期

函数

       函数对任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以在任何地方、任何时候调用执行。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;

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

你可能感兴趣的:(web,javascript)