javascript中的有名函数和无名函数

JavaScript中的函数可以分为有名函数和无名函数两种类型。有名函数为函数定义指定了一个名称,而无名函数则没有。

有名函数

函数定义

有名函数最基本的定义方式就是定义一个函数名,并编写函数体:

function add(a, b) {
  return a + b;
}

这是定义一个相加函数的示例,函数名为add,接受两个参数a和b,并返回a和b的和。

函数表达式

将一个函数直接赋值给一个变量,就构成了函数表达式。通过这种方式定义的函数称为“匿名函数”,也称为“无名函数”,因为没有给函数一个明确的名称。

let add = function(a, b) {
  return a + b;
}

这段代码定义了一个变量add,它存储了一个函数。这个函数接受两个参数a和b,返回它们的和。

我们可以使用这个变量来调用这个函数:

let result = add(2, 3); // result的值为5

箭头函数

ES6引入了箭头函数的定义方式。箭头函数也可以是有名函数或无名函数。箭头函数的语法更为简洁,因此在一些场合下可以取代传统的函数定义方式。

下面是一个简单的加法器的例子,使用了箭头函数:

let add = (a, b) => a + b;

这行代码定义了一个变量add,存储了一个箭头函数。这个函数接受两个参数a和b,返回它们的和。

无名函数

函数定义

无名函数的定义方式与有名函数的函数表达式类似,只是没有定义一个函数名称。

let add = function(a, b) {
  return a + b;
};

这个函数表达式定义了一个变量add,存储了一个无名函数。这个函数接受两个参数a和b,返回它们的和。

IIFE

IIFE (Immediately Invoked Function Expression) 是一个立即执行的函数表达式。它的目的是创建一个独立的作用域,防止变量污染全局作用域。

(function() {
  // 这里是代码块
})();

这段代码定义了一个匿名函数,并立即执行它。这个函数没有任何参数,同时也没有返回值。如果需要传递参数,也可以这样写:

(function(a, b) {
  // 这里是代码块
})(2, 3);

这里将23作为参数传递给了这个函数。

在IIFE中定义的变量只有在函数内部可见,不会污染全局作用域。这在一些模块化的场合下比较有用。

示例

下面是一个结合了有名函数、函数表达式和IIFE的示例,模块化实现了一个简单的“计数器”功能。它定义了一个单例对象Counter,只暴露了一个方法increment,调用一次这个方法就会将计数器加1。

let Counter = function() {
  let count = 0;

  function increment() {
    count++;
    console.log(count);
  }

  return {
    increment: increment
  };
}();

Counter.increment(); // 输出1
Counter.increment(); // 输出2

这个代码中定义了一个匿名函数,并立即执行它。这个函数返回一个对象,这个对象含有一个increment方法,执行这个方法会将一个私有变量count加1,并将结果输出到控制台。

let Counter = function() {
  let count = 0;

  return {
    increment: function() {
      count++;
      console.log(count);
    }
  };
}();

Counter.increment(); // 输出1
Counter.increment(); // 输出2

这是同样的示例,只是使用了函数表达式的方式定义了increment方法。实际上使用箭头函数也可以实现同样的效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript中的有名函数和无名函数 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Chrome扩展页面动态绑定JS事件提示错误

    Chrome扩展开发中,我们经常需要在选项页面或者弹窗页面中动态绑定JS事件。但是在实际开发的过程中,发现有时候动态绑定事件会出现错误,需要我们进行排查。下面是一个完整攻略,帮助开发人员解决这个问题。 1. 确认目标事件是否正确绑定 在进行动态绑定事件时,我们需要确认目标事件是否正确绑定。例如,我们在页面中找到一个按钮,需要在按钮上动态绑定click事件,如…

    JavaScript 2023年6月10日
    00
  • Json文件格式化方法详解

    Json文件格式化方法详解 什么是Json? Json(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript语言的子集,采用完全独立于编程语言的文本格式来存储和表示数据。Json由于具有简洁和易读的特点,得到了越来越广泛的应用。 Json文件格式化方法详解 在实际的开发中,有时候我们需要处理包含大量数据…

    JavaScript 2023年6月11日
    00
  • javascript基本包装类型介绍

    JavaScript 基本包装类型指的是 Boolean、Number 和 String 这三种类型,它们提供了将基本类型值转换为对象的能力。在需要调用方法时,这种类型非常方便。 Boolean Boolean 基本包装类型表示的是布尔值,即 true 和 false。创建 Boolean 对象有两种方式:一种是通过 Boolean 构造函数创建,另一种是使…

    JavaScript 2023年5月19日
    00
  • element-ui 上传图片后标注坐标点

    下面将详细讲解“element-ui上传图片后标注坐标点”的完整攻略。 准备工作 安装 element-ui 组件库和 vue-cropperjs 图片裁剪插件。 npm install element-ui vue-cropperjs –save 引入 element-ui 中的 Upload 和 Dialog 组件。 <template> …

    JavaScript 2023年6月10日
    00
  • 在javascript将NodeList作为Array数组处理的方法

    将NodeList作为Array数组处理的方法是在javascript中非常有用的技巧之一。在许多情况下,获得的是NodeList类型的HTML元素集合,我们可能需要对集合进行操作,比如对集合进行排序,筛选等。然而,NodeList不是真正的数组类型,它缺少数组类型的操作和方法。幸运的是,我们可以使用一些技巧将NodeList转换为以进行操作的数组。 在ja…

    JavaScript 2023年5月27日
    00
  • XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)

    XMLHTTP 是浏览器内置的一种 HTTP 请求方式,可以通过 JavaScript 来进行调用发送 HTTP 请求,从而得到响应数据。在使用 XMLHTTP 时,常常会出现乱码的现象。有时是因为发送请求的页面本身的编码格式设置错误,使得接收到的数据乱码。也有可能是接收到数据中文字符的编码格式与前端页面编码格式不一致导致。 针对这种情况,我们可以采取一些措…

    JavaScript 2023年5月19日
    00
  • JavaScript使用indexOf获得子字符串在字符串中位置的方法

    JavaScript中indexOf()方法可以用来查找字符串中一个子字符串的位置。它会在调用它的字符串中搜索指定的子字符串,并返回该子字符串在字符串中的位置。如果没有找到指定的子字符串,则返回-1。 下面是使用indexOf()方法来获得子字符串在字符串中位置的方法: 语法 string.indexOf(searchValue [, fromIndex])…

    JavaScript 2023年5月28日
    00
  • Javascript点击其他任意地方隐藏关闭DIV实例

    好的。您想实现的效果是当用户在页面上点击除某个指定的div以外的其它任何地方时,可以将该指定的div隐藏起来。实现这个功能可以使用JavaScript。 下面是实现该功能的完整攻略: 1.在HTML中添加div元素 首先,在HTML文档中添加包含需要隐藏的内容的div元素。例如,下面的代码创建一个div元素: <div id="myDiv&q…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部