函数

函数

函数的3种创建方式
//1.function 方法名(){}
function print(){
	alert("hello function!");
}
print();

//2.引用指向匿名方法
var add = function(a,b){
    console.log(a+b);
    return a+b;
};
var result = add(1,3);
console.log(result);
var add2 = add;
add2(10,20);

//3. new Function(参数列表,返回结果或执行语句)
var add3 = new Function('a','b','alert(a+b)');
add3(20,30);
参数
function print(a,b,c,d,e,f){
    console.log(arguments);
    console.log(arguments.callee==print);//true
}
print();
print(1,3,4,5,6);//当给定参数小于形参的数量,多余的参数用undefined表示
函数定义
 函数定义:
 关键字:function
 形参、无参、有参
 多个参数以逗号分割,定义不需要使用var
 返回值return:没有返回值、有返回值

函数调用:
函数引用()
(实参列表):
实参与形参:
实参与形参个数上位置上一一对应,
若是实参数量小于形参:没有传递的形参,值为undefined

返回值:
接收:有返回值,若是没有返回值接收:结果为undefined
不接收:没有返回值,有返回值
函数是对象,是引用。
eval()方法的使用
var str = "var a=1;";
eval(str);
alert(a);

var str2 = "function add(a,b){return a+b;};"
eval(str2);
var rs = add(10,9);
console.log(rs);

//addr函数
//var str3 = window.prompt('输入一个函数');;
//eval(str3);
//test();

var str3 = window.prompt('输入一个函数');
var rs2 = eval(str3);

console.log(addr(13,8));


var str = "stu({'name':'wc','age':'21'})";
eval(str);

function stu(obj){
    alert(obj.name+"--"+obj.age);
}

function jsonp(obj){
    alert(obj.name+"的性别是"+obj.sex);
}
jsonp跨域
<script>
			function test(obj){
				console.log(obj);
			};
		</script>
		<script type="text/javascript" src="https://passport.baidu.com/v2/?regnamesugg&username=wc123&traceid=&callback=test" ></script>
匿名函数
匿名函数有两种方法调用

//及时调用
(function(a,b){
    alert(a+b);
})(1,2);

//通过引用访问
var c = function(a,b){
    alert(a+b);
}
c(1,2);
闭包函数
闭包函数就是函数内部再嵌套使用函数
闭包函数的外部函数不能访问内部的函数,但是内部函数可以直接访问外部函数
闭包函数可以扩大函数内部局部变量的生命周期,(生命周期和全局变量一直,但仍是局部变量)
demo:
//不带闭包
function outter(){
   
    var count = 0;
    function inner(){
        count+=1;
        return count;
    };
    return inner;
};

var i = outter();
console.log(i());
console.log(i());
console.log(i());

//带参数的闭包
function outter2(num){
	function inner(){
	num+=1;
	return num;
	};
	return inner;//返回内部函数的引用,而不是调用(如果返回调用拿到的是固定值num)
};

var i2 = outter2(10);
console.log(i2());
console.log(i2());
console.log(i2());
递归函数
//汉诺塔
function hanoi(n,a='A',b='B',c='C'){			
    if(n == 1){
        counter++;
        console.log(counter+'次'+n+':'+a+'->'+c);
        return;
    }
    hanoi(n-1,a,c,b);
    counter++;
    console.log(counter+'次'+n+':'+a+'->'+c);
    hanoi(n-1,b,a,c);
}			
hanoi(3);
console.log('共有'+counter+'次');

//7步阶梯
function step(n){
    if(n == 1){
        return 1;
    }else if(n == 2){
        return 2;
    }
    return step(n-1)+step(n-2);
}
console.log(step(7));



//计算n的阶乘
function factorial(n){
	if(n == 1){
	return 1;
	}else{
	return factorial(n-1)*n;
	}
}
var num = factorial(10);//计算10的阶乘
alert(num);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值