JS-函数

JS笔记


函数语法

无参数无返回值的函数:
函数声明1:
 function 函数名() {
  函数体(具体要执行的代码);
 }
调用1:
 函数名();

function print(){
	for(var i = 0;i < 10;i++){
		document.write("hello world<br/>");
	}
}
print();

有参数无返回值的函数
函数声明2:
 function 函数名(形参1,形参2,…) {
  函数体;
 }
调用2:
 函数名(实参1,实参2,…);//传参:用实参给形参赋值

function print(n){
	for(var i = 0;i < n;i++){
		document.write("hello world<br/>");
	}
}
print(9);

有参数有返回值的函数
函数声明3:
 function 函数名(形参1,形参2,…) {
  函数体;
  return 表达式;
 }
【注】函数运行时,遇到return,整个函数会终止

function add(num1,num2){
	return num1 + num2;
}
var res = add(6,9);
alert(res);//document.write(res);可以有多种不同的输出方式

函数作用
  1. 使程序变得简洁而清晰
  2. 有利于程序维护
  3. 可以提高程序开发效率
  4. 提高了代码的重用性/复用性

封装函数

【注】封装函数时,每一个函数内部都有一个arguments,是系统内置的。arguments用来存储实际传入的参数(优先使用形参,除非特殊情况)
属性:
arguments.length输出当前里面存储的参数个数
arguments[下标];访问某一个数据,下标从0开始

function sum(){
	var res = 0;
	for(var i = 0;i < arguments.length;i++){
		res += arguments[i];
	}
	return res;
}
var num = sum(10,20,30,40,50);
alert(num);

函数作用域

任何程序在执行的时候都要占用内存空间,函数调用的时候也要占用内存空间
垃圾回收机制:调用函数的时候,系统会分配对应的空间给这个函数使用(空间大小一般由这个函数里声明的变量和形参决定);当函数使用完毕以后,这个内存空间要释放,还给系统
【注】在函数内部声明的变量和形参是属于当前函数的内存空间里的

var a = 2;
function show(){
	a++;
	alert(a);
}
show();//3
show();//4
show(a);//4

function show(){
	var a = 2;
	a++;
	alert(a);
}
show();//3
show();//3
alert(a);//a is not defined

函数递归

满足以下三个特点:

  1. 函数自己调用自己
  2. 一般情况下有参数
  3. 一般情况下有return

构造方法:

  1. 首先找临界值,即无需计算就获得的值
  2. 找这一次和上一次的关系
  3. 假设当前函数已经可以使用,调用自身计算上一次

【注】不推荐,因为会一次开很大内存,然后用完再释放掉,计算机容易出故障


函数练习
//编写一个函数,计算两个数字的和、差、积、商
	function operation(num1, operator, num2) {//operator根据运算符的符号,进行不同的运算
		switch (operator) {
        	case "+":
            	return num1 + num2;
            	break;
          	case "-":
            	return num1 - num2;
            	break;
          	case "*":
            	return num1 * num2;
            	break;
          	case "/":
            	return num1 / num2;
            	break;
          	default:
            	alert("Error");
            	break;
        }
  	}
    var result = operation(3, "+", 5);
    console.log(result);

//编写一个函数,当n为偶数时,求1/2+1/4+...+1/n,当n为奇数时,求1+1/3+1/5+...+1/n
    function sum(n) {
    	var result = 0;
        if (n % 2 == 0) {
          	for (var i = 2; i <= n; i += 2) {
            	result += 1 / i;
         	}
        } else {
          	for (var i = 1; i <= n; i += 2) {
            	result += 1 / i;
          	}
       }
       return result;
    }
    var rst = sum(4);
    console.log(rst);

//递归,计算1-n的和
	function sum(n) {
		if (n == 1) {
			return 1;
		}
		return sum(n - 1) + n;
	}
   	alert(sum(100));

//斐波那契数列
	function rabbit(n) {
		if (n < 4) {
			return 1;
        }
        return rabbit(n - 1) + rabbit(n - 3);
	}
	alert(rabbit(9));

/*递归(猴子吃桃)
	有一堆猴子不知数目,猴子第一天吃掉一半,觉得不过瘾,又多吃了一只,第二天照此办法,吃掉了剩下桃子
	的一半多一只,天天如此,到第num(num<=10)天早上,猴子发现只剩下一只桃子了,问这堆桃子原来有多
	少只?
*/
	function peach(n) {
		if (n == 1) {
			return 1;
        }
        return (peach(n - 1) + 1) * 2;
	}
    alert(peach(4));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值