JavaScript高级程序设计 笔记【第五章】function类型

5.5 Function类型

函数有两种定义方式函数声明函数表达式

//函数声明
function sum(num1,num1){
   return num1+num2;
}
 //函数表达式
var sum = function(num1,num1){
    return num1+num2;
}

其中,函数表达式必须先定义后使用。就像是一个变量一样。

函数声明可以先使用,后定义

 

5.5.1 没有重载

函数名是一个指针。指向了一个函数。所以重新定义函数只会覆盖

function sum(num1,num1){
   return "第一个sun";
}

var sum = function(num1,num1){
    return "第二个sun";
}

alert(sum());   //第二个sum

上边代码可以近似理解为:

var sum = "第一次";
var sum = "第二次";
alert(sum);    //"第二次"

 

5.5.3作为值的函数

函数也可以被当成实参传进去

此处给test()函数传入了chat1,并且返回结果。

      function chat1(){
        return "这里是chat1";
      }

      function test(fun,str){
        return fun()+str;
      }

      alert(test(chat1,"进入"));    //这里是chat1进入

 

5.5.4函数内部元素this

this引用的是函数的执行环境。

getColor()返回this的color属性,把他赋值给 i 和 j 作为方法。

然后调用,就会返回 i 和 j 环境的color元素。

function getColor(){
  return this.color;
}

var i = {color:"blue"}
i.getColor = getColor;

var j = {color:"red"}
j.getColor = getColor;

alert(i.getColor());  //blue
alert(j.getColor());  //red

 

5.5.5函数属性方法

在js中函数也是对象,所以有函数的属性和方法。

length属性表示函数希望接受的命名参数个数

  function t1(num1,num2){
  }

  function t2(str){
  }

  alert(t1.length); //2
  alert(t2.length); //1

 

call()方法功能是改变函数定义域,在这里把testCall的定义域修改为c1和c2的。所以输出red和blue。

apply()j和call()区别只是call()可以传递多个实参,apply()只能传递数组。

  var c1 = {color:"red"};
  var c2 = {color:"blue"}; 


  function testCall(str){
    return this.color+str;
  }

  alert(testCall.apply(c1,"12")); //"red"
  alert(testCall.call(c2,"13")); //"blue"

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值