函数(2)

函数

        函数:可以封装任意多条语句,而且可以在任何地方、任何时候调用执行

一、函数创建

1、 function 函数名(){代码段} 

        函数的声明---普通函数声明

        通常来说函数的声明会有一个返回值,如果没有设置return,该函数默认返回未undefined,如果设置,将返回该值。执行函数后会返回该值。

        案例:

function sum(){
    var s=3+4;
    return s;
}
console.log(sum());    //返回7

2、 function(){代码段}  //匿名函数

        可以在对象属性中使用匿名函数

3、 构造函数用于理解对象,实际意义不大

二、函数的调用

函数名()

        匿名函数时,变量名()

        new 函数名(),函数执行但是返回值是this指向

function Abc(){
   var s = 3+4
   console.log(s)
   this.name = "张三"
   this.age = 16
   return s
}
var box = new Abc()
console.log(box)  //返回一个空对象
   // new 构造函数的返回值this
   // return 返回值并结束函数

 自执行函数

var s1 = (function(){
   return 7
})()

递归调用

        递归调用
        函数调用函数本身

function sum(i,s3){
   console.log(i,s3)
   if(i<=10){
      return sum(i+1,s3+i)
   }else{
      return s3
   }
}
(function(){})() 
(function(){}())
!function(){}()

三、call()和apply()

        函数名.call([改变this指向][,参数1][,参数2...])

        函数名.apply([改变this指向][,数组])

        call()调用函数,改变函数内的 this指向

        实程时有些特殊情况导致,对象方法中的 this没有对象本身,这时使用call()强制改变 this指向

        multy.call({name:"刘德华"},1,1)

        与call()功能相同的apply()

        apply函数传递参数时用数组

        multy.apply({name:"张学友"},[1,1])

        删除函数:普通函数无法删除。匿名函数通过将变量设置为 null来删除函数。对象中的方法,使用delete删除。

        案例一:

var box = function(){
         var sum = 2+3
         console.log(sum)
         return sum
      }
console.log(box())
// box=null删除匿名函数 
//    box = null
//    console.log(box())

        案例二:

var obj = {
         a:function(){
            console.log("Hello JavaScript")
         }
      }
obj.a()
// 对象中方法删除delete obj.a 
//    delete obj.a
//    obj.a()

四、参数和返回值

        所有函数都有参数和返回值

        参数-形参和实参

        案例一:

function sum1(a,b){
   return a+b
}
console.log(sum1(2,3))
console.log(sum1(4,5))

        返回值,使用 return返回并结束函数

        面向对象三大特征:封装、继承、多态

        程序代码优劣原则:高内聚、低耦合

        argument对象,实现求最大值、最小值、计算累加、计算累乘

        案例一:

function max(){
   console.log(arguments)
   var m = arguments[0]
   for (var i = 0; i < arguments.length; i++) {
      if(arguments[i] > m){
         m = arguments[i]
      }
   }
   return m
}
console.log(max(11,8,6,7,2,3))

        return 返回值并结束函数,return 后的代码不执行

        continue/break 跳出循环

五、函数也是对象

        只能通过点语法添加属性和方法,函数名就表示这个对象          

        调用对象的方法时,this指这个对象

        函数的 length属性表示形参个数,所有对象都prototype属性即原型对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值