函数
1.函数的由来
函数是为了让我们使用“量”来克服“难”和“大”的问题。
我们通过把一些复杂的问题简单化,来解决问题。
2.函数的组成
定义函数的关键字 (function)、函数名和形式参数组成,还有函数体
3.函数的调用
函数名和实参
4.案例
验证100以内的数都符合角谷定理
这个我们预期结果是6,显示结果也是6.
<script>
var flag = true;
for(var n=2; n<=100; n++){
if(!isJiaogu(n)){
flag = false;
}
}
alert("角谷定理验证"+(flag?"成功":"失败"));
/*
* 功能:判断一个给定的数是否符合角谷定理
* 名称:isJiaogu
* 输入参数:待判断的数
* 输出结果:true/false
* */
function isJiaogu(n){
while(n != 1){
if(n%2 == 0){
n /= 2;
}else{
n = n*3+1;
}
}
return true;
}
</script>
通过上面的例子我们发现,函数是独立出来的,就相当于一个密闭的空间。
5.函数的本质
直观地理解就是实现某个独立功能的代码段,或者说是一个数据加工的黑匣子。外面做什么与他没有关系,他只需要完成自己的工作。
6.函数的参数传递
就是把实参的值传递个形参。
1)值传递
var a = 5;
increase(a);
alert(a);
function increase(x){
x++;
}
这个我们预期是6,但是结果显示是5.说明值没有被传递回去。因为a与x是两个不同的变量。
2)引用传递
var a = new Object();
a.value = 5;
increase(a);
alert(a.value);
function increase(x){
x.value++;
}
这个我们预期结果是6,显示结果也是6.
这个在传递的过程中就使用了引用,结果与预期结果一样。
对象采用的是引用传递,object。
常规类型采用的是值传递,如Number,String,Boolean。
如果希望把参数从函数中带回来,但是函数的返回值只有一个。
总结
函数这种解决方案给我们提供了一个解决规模大,难度高的问题的解决思路:将他分解为多个规模相对较小,难度相对较低的问题去解决,如果分解后的问题依然是规模大,难度高的,我们可以接着分解,直到分解后的问题足够小,简单。总之就四个字“大事化小”。