加入收藏 | 设为首页 | 会员中心 | 我要投稿 莱芜站长网 (https://www.0634zz.com/)- 云连接、建站、智能边缘云、设备管理、大数据!
当前位置: 首页 > 编程开发 > Java > 正文

JavaScript 函数

发布时间:2023-02-16 14:17:19 所属栏目:Java 来源:互联网
导读:在 JavaScript中,函数是头等 (first-class) 对象,因为它们可以像任何其他对象一样具有属性和方法。它们与其他对象的区别在于函数可以被调用。简而言之,它们是 Function 对象。(MDN) 函数就是一段代码片段,调用函数就是执行函数中的代码。 1. 函数的使用

 
  具体原因可以查看执行上下文章节。
 
  4.2 函数作用域
  函数有他自己的作用域,函数内声明的变量等通常情况下不能被外部访问,但是函数可以访问到外部的变量或者其他函数等
 
  var a = ;
  function fn() {
      var b = ;
      console.log(a); // 输出:1
      console.log(b); // 输出:2
  }
  fn();
  console.log(b); // ReferenceError: b is not defined
  执行以上代码会报 b is not defined 错误。
 
  4.3 匿名函数
  没有名字的函数就是一个匿名函数
 
  var fn = function() {
      console.log('我是一个匿名函数');
  };
  除了在函数表达式中会出现匿名函数,还有许多场景。
 
  相对常见的一个就是自执行匿名函数,MDN官方翻译为立即调用函数表达式。
 
  自执行就是这个函数声明后就会立即执行,自执行的匿名函数通常会被用来形成独立的作用域。
 
  如:
 
  (function() {
      var num = ;
      alert(num);
  })();
  这是一个自执行的匿名函数,这个匿名函数是被包裹了一段括号后才被调用的。
 
  以下这段代码会报错:
 
  // 报错
  function() {
      var num = ;
      alert(num);
  }();
  浏览器会告诉你必须给函数一个名字。
 
  通过括号包裹一段函数,让js引擎识别成他是一个函数表达式,再对他进行执行,就不会报错,这是加括号的原因。
 
  同理,可以使用 +,! 等运算符代替括号,让一个匿名函数成为一个函数表达式即可。
 
  大部分第三方框架都会通过一个自执行的匿名函数包裹代码,与浏览器全局环境隔离,避免污染到全局环境。
 
  4.4 具有函数名的函数表达式
  函数表达式进行声明的时候也可以使用具名函数
 
  var count = function fn(num) {
      console.log('我是一个函数');
  };
  以上这段代码是不会报错的,但是不能通过 fn 访问到函数,这里的 fn 只能在函数内部进行访问,通常在使用递归的形式做计算的时候会用到这种写法。
 
  var count = function fn(num) {
      if (num < ) {
          return num;
      }
      return fn(num - ) + num;
  }
  count();
  上面这个例子,就是在函数内部访问 fn 调用自己,使用递归的形式求和。
 
  注:递归相关的知识可以参考相关文献进行学习
 
  4.5 arguments
  arguments 是一个对应于传递给函数的参数的类数组对象。(MDN)
 
  通常情况下函数都具有 arguments 对象,可以在函数内部直接访问到。
 
  他是一个类数组,即长得很像数组,成员都是用数字编号,同时具有 length 属性。
 
  arguments 中存放着当前函数被调用时,传递过来的所有参数,即便不声明参数,也可以通过 arguments 取到传递过来的参数。
 
  function sum() {
      console.log(arguments);
  }
  sum(, , , );
  执行上述代码,可以看到在控制台输出了一个对象,存放的就是所有传递过去的参数,利用这一特性,就可以不限制参数个数,或者让函数做中转站(拦截函数),利用 arguments 将参数传递给另一个函数。
 
  如,一个不确定用户输入的参数个数的求和函数:
 
  function sum() {
    var total = ;
    var i;
    var len;
    for (i = , len = arguments.length; i < len; i++) {
      total += arguments[i];
    }
    return total;
  }
  var total = sum(, , , , );
  console.log(total); // 输出:25
  通过循环遍历 arguments 对象,就可以得到所有参数,然后做累加就可以达到求和的目的。

(编辑:莱芜站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读