函数
函数的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) ;
}
print ( ) ;
print ( 1 , 3 , 4 , 5 , 6 ) ;
函数定义
函数定义:
关键字: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) ;
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;
} ;
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+ '次' ) ;
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 ) ) ;
function factorial ( n) {
if ( n == 1 ) {
return 1 ;
} else {
return factorial ( n- 1 ) * n;
}
}
var num = factorial ( 10 ) ;
alert ( num) ;