函数对任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以在任何地方、任何时候调用执行。JavaScript中的函数使用function关键字来声明,后跟一组参数以及函数体。
理解函数最简单的办法就是拿数学里的函数作为例子,就比如y = f(x * 2)这个函数,当x的值为3的时候,y就是6, x 为 5的时候 y就是10。
function f (x){
return x * 2;
}
var y = f(3);
console.log(y); //6
这段代码的含义就相当于数学里面的 y = f(x * 2)这个函数。
return 可以把值给返回,f (x)里面的x是参数,可有可无,也可以有多个。return 也是可有可无。
在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;
不过,这种做法并不意味着自动回收该值所占用的内存。解除引用的真正作用是让值脱离执行环境,方便垃圾收集器下次执行的时候将其回收。