JavaScript中的Function对象以及arguments对象详解

一、函数本质

  • 函数本质上就是对象,函数名指向函数对象。
function f(){
    return 123;
}
var num = f();
var x = f;

这里写图片描述

  • console.log(typeof f); //function

二、创建函数(共3种方法)

  • 直接使用function关键字声明新的函数
function f1(){}
  • 使用Function对象创建
var f2 = new Function()
  • 匿名函数
var f3 = function(){}

三、arguments对象

  • arguments属性是一个类数组对象,每个Function对象都具有该属性
  • arguments属性只在函数执行体内有效,从中可以读取当前函数接收到的所有实参
  • 使用arguments对象可以处理可变数量的参数,从而解决JavaScript所不支持的多态性
  • 属性:length:返回所传入实参的个数
function add(num1,num2){
    return num1 + num2;
}
function add(num1,num2,num3){
    return num1 + num2 + num3;
}
console.log(add(10));       //NaN
console.log(add(10,20));    //NaN
console.log(add(10,20,30)); //60

由上面例子可以看出,JavaScript中不支持多态,下面用arguments来解决这个问题

function add(){
    var sum = 0;
    for(var i = 0 ;i<arguments.length;i++){
        sum += arguments[i];
    }
    return sum;
}
console.log(add(10));       //10
console.log(add(10,20));    //30
console.log(add(10,20,30)); //60

四、函数的种类

1、 标准自定义函数

  • 声明提升(函数、变量)

2、 表达式函数

  • 传递性
var add = function(){
    console.log("ok");
}
var t = add ; //这里传递的是内存地址
  • 本质:add是指向内存的指针,调用时是在指向的内存中把程序拿出来执行一次。

3、 嵌套函数

function a(){
    function b(){

    }
}
  • b()在外面不能被访问
  • 要想在外面访问b,要在程序中用return
function a(){
    function b(){

    }
    return b;
}

4、 匿名函数

  • function() {}
  • 只能立即调用
  • 匿名函数不需要起名字,少占用变量;效率更高;主要用在你封闭作用域上

5、 回调函数

  • 把一个函数名作为实际参数传递给另外一个函数
function a(){
    console.log("hello");
}
function print(fn){
    fn();
}
print(a);  //hello

6、 递归函数

  • 自己调用自己
  • 必须有个结束条件
  • 思想:要解决一个问题,必须先解决前一个问题,直至能解决的问题
var i = 1 ;
function a(){
    console.log(i++);
    if(i < 10){
        a();
    }
}
a();

7、 系统函数

  • setInterval()
  • setTimeOut()

8、 懒函数

  • 只做一次就变化的函数
  • 用途:优化JS性能、创建对象、处理兼容性……
function a(){
    console.log("hello")
    a = 5;
}
a(); //hello
a();  //会报错
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值