接收参数函数、执行函数

这篇博客探讨了在JavaScript项目中如何提供接收接口和输出接口。文章详细阐述了接收函数的区别,例如`add(happy)`与`add(happy())`,并解释了JavaScript数组的特性和类型判断。此外,还介绍了同步执行函数的概念,并展示了如何使用对象完全包装接收和执行函数。

做项目需要提供接收接口和输出接口

步骤:
接收其他代码,保存接收代码,再去执行,执行返回结果

函数信息:

  function happy(){
    console.log("happy");
  };

接收函数:

//创建数组,把所有接收的函数信息以数组方式保存着:
  var arr = [];

//创建函数,负责接收信息。:
  funciton add(n){
    arr.push(n);  //arr.push()在数组末尾添加一个元素。传到数组的方括号[]里。
  };
  add(happy);  //以参数方式传入到数组方法里。

注意: add(happy);add(happy()); 有区别,如下代码:

<script>
function happy(){
  console.log("Hello");
}
var arr = []; // 创建数组
function add(n){
  arr.push(n);
}

add(happy());
add(happy);
add(happy);

console.log(arr);
</script>

运行结果:
在这里插入图片描述

在这里插入图片描述

总结:

  1. add(happy); 中 happy 把整个函数代入数组里;
    add(happy()); 中 happy() 执行函数,直到函数无法执行,返回结果到数组里。在数组的元素中出现 undefined,是因为 happy() 函数执行完后,函数会默认给我们返回 undefined。

  2. js的数组是无类型的:数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型。数组的元素可以是对象或其他数组,这样就可以创建复杂的数据结构。
    通常我们可以用一元运算符typeof来判断js的数据类型,但是对于数组这样一个特殊的对象却只能返回"object"。

关于JS数据类型、数组判断,参考:http://www.cnblogs.com/mofish/p/3388427.html

同步执行函数

//执行函数:
goIn();  //调用函数
function goIn(){
  for(var i = 0; i<arr.length;i++){
    arr.pop()(); //arr.pop() 数组最后一个元素删除。
  };
};

使用对象完整包装接收函数和执行函数:

<script>
 //对象包装:
  function happy(){
    console.log("happy!");
  };

  var work = new Object();
  work.arr = [];
  work.goIn = function (){
    for(var i = 0;i < work.arr.length; i++){
      (work.arr[i])()   //也可以编写:work.arr.pop()();
    };
  };
  work.add = function(n){
    work.arr.push(n);
  };
  work.add(happy);
  work.add(happy);
  work.add(happy);
  work.add(happy);
  work.goIn()

  timename=setInterval("work.goIn();",5*1000);

</script>

解析: 如上代码中 work.arr.pop()(); 是什么意思?

work.arr.pop()();相当于如下代码:
var tmp = work.arr.pop();
tmp();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值