一 函数的介绍
1.概念:由一堆代码按照一定的规则,组成实现了某个功能,通过函数自身或事件调用
函数的特点:
忽略细节:只关注其实现的功能,不关注内部构造;
重复使用:函数可以实现代码的重复利用;
选择使用:只有当函数执行时,函数中的代码才能运行,不执行即不运行。
function fn(a){ console.log(a); //5 } fn(5);
参数的个数:可以传无限个。
参数的类型:可以是任何数据类型。(当一个函数A作为参数,传到另一个函数B中,被执行,作为参数的这个函数A,叫回调函数)
关系:实参和形参,数量一致,按照顺序一一对应(形参多,多出来的形参是undefined;实参多,多出来的实参,被传到arguments对象中)
function fn(b,a,c){ console.log(a); //world console.log(b); //hello console.log(c); //123 console.log(argument); //Argument{0:"hello",1:"world",2:123,3:456,4:789} } fn("hello","world",123,456,789) ;
argument:是一个伪数组,有长度和索引;可以通过遍历拿到所有实参。
5.函数的返回值
返回值:在函数执行结束后,得到的数据,返回到函数的执行语句上。
(默认情况下,函数返回undefined,如果需要有返回值,要在函数中使用关键字:return)
function fn(){ console.log(a); //f2 var a = "hello"; console.log(a); //"hello" function a(){1} console.log(a); //"hello" a = "world"; console.log(a); //"world" function a(){2} console.log(a); //"world" } fn(); // 以上代码等价于↓↓↓ function fn(){ var a; function a(){1} function a(){2} console.log(a); //f2 a = "hello"; console.log(a); //"hello" console.log(a); //"hello" a = "world"; console.log(a); //"world" console.log(a); //"world" } fn();
3.函数的递归:在函数中执行自己(递归最重要的就是停止条件)
//用递归求10的阶乘 function fn(n){ if(n == 1){ return 1 }else{ return n * fn(n - 1) } } console.log(fn(10))
//利用递归求斐波那契数列(1,1,2,3,5,8,13,21,34,55,89...) function fn(n){ if(n == 1 || n == 2){ return 1 }else{ return fn(n-1) + fn(n-2) } } console.log(fn(5))
4.构造函数
构造函数:不是一种函数,就是一种执行函数创建数据的方式。
//创建数值数据: var n = new Number(123); //创建字符型数据: var s = new String("hello");
原文:https://www.cnblogs.com/miaomiaolong2/p/12002071.html