5.函数
一,函数是什么
对于JavaScript 来说 函数就是把一段代码放在一个盒子里,在我想要用
到这段代码的时,直接执行这段代码就可以了
例如在网页中 有多个类似的结构时 可以用到函数
函数可以减少冗余代码,提高代码的可维护性及可阅读性
二,函数的分类
函数可分为
-
-
内置函数 所有的内置对象里面的函数 都叫内置函数 (Math.pow())
-
三,如何定义函数和使用
使用function关键字 定义一个有名字的函数(声明式)
function 函数名(形参,形参...){ 函数体(代码) } //声明 具名函数(第一种) function sayHello(){ console.log('hello') } sayHello() //传递参数 function sayHello1(name,age){ //形参是形容的参数 console.log('hello'+name+age) } sayHello1('李四') //传进的是实参 根据你要的参数个数来传递对应的参数个数 //调用 // sayHi() //报错 // console.log(sayHi); undefined //具名函数的变种声明 (第二种) var sayHi = function(){ console.log('hi') } sayHi()
var 函数名 = new Function('形参,形参1','函数体') //定义 var sayBye = new Function('console.log("bye bye!!")') //调用 sayBye() //传参 var sayBye = new Function('username','console.log("bye bye!!"+username)') //调用 sayBye('李四')
区别:声明式可以先调用再定义(预编译)
而赋值式只能先定义再调用
在程序执行之前有个预编译过程
1.他会声明对应的function和var关键词修饰的变量(开辟内存的操作)
2.对应的function的内存空间开辟以后他会将对应的代码块放到其中 等待调用
3.var 修饰的关键词 只会开辟一个空间 并不会进行赋值(默认给他的一个undefined的值)
四,
function sum(a,b){ return a+b console.log('不会执行的代码') } console.log(sum(1,2))//返回的对应的1+2的结果
如果没有return关键词 返回的一个undefined的值
函数执行过程
1.把对应的开辟的function内存里面的代码块丢给方法栈(执行栈)去执行
2.执行栈就会自动取执行对应的方法 执行完返回对应的结果
3.当前结果返回完毕以后 对应的执行栈里面的内存空间要进行回收(GC)将这个内存空间销毁
函数内部可以再包含其他函数;
function fn1(){ console.log('函数1'); function fn2(){ console.log('函数2'); // fn1() 没有结束就是死循环 } function fn3(){ console.log('函数3'); //调用函数2 fn2() } fn2() fn3() } fn1() //函数1 函数2 函数3 函数2
递归可以完成所有循环做的事情 (但是递归的效率较低)
递归三要素
-
找规律
-
找临界值(没有规律的值)return
-
自己调自己(在函数内部调用自己的函数)
function fn(n){ //一般情况都会有参数 n表示为位数 if(n==1){//没规律的(一般在前面或者后面) return 2 //返回具体的值 }else{ //有规律的 返回对应的规律的公式 return fn(n-1)+2 } } console.log(fn(100))

浙公网安备 33010602011771号