JavaScript函数(声明函数、调用函数、匿名函数、箭头函数、构造函数)

目录

  • 1. 函数
    • 1.1 声明函数
    • 1.2 调用函数
    • 1.3 匿名函数
      • 1.3.1 函数表达式
      • 1.3.2 立即执行函数
    • 1.4 箭头函数
    • 1.5 构造函数

1. 函数

1.1 声明函数

  • 函数的调用不传递值给形参,且形参没有默认值,则其值为undefined
  • 如果没有return返回值,则返回undefined
  • 函数内部,变量没有声明,直接用num = 1赋值,也当全局变量看
  • 两个相同名称的函数,后面定义的会覆盖前面定义的
  • 局部变量和全局变量同名,则局部变量优先
   function getMinMax(x = 0, y = 0) {// 局部变量let min = x > y ? y : xlet max = x > y ? x : yreturn [min, max]}

1.2 调用函数

  • 如果实参过多, 那么多余的实参会被忽略
  • 可以使用...arr声明一个形参,放在形参的最后,接收多余的实参。使用的时候直接用arr(真数组)
  • 函数内部有一个伪数组arguments,里面装着所有的实参
  • 函数调用存在提升: 函数在当前作用域声明之前即可被调用。但函数表达式不存在函数提升
    let minMaxArr1 = getMinMax(1, 3)console.log(minMaxArr1)  // [1, 3]

1.3 匿名函数

1.3.1 函数表达式

  • 必须先声明,再调用
  • 应用场景: 可以将函数赋值给按钮的点击事件
    let func = function (x = 0,y = 0) {let min = x > y ? y : xlet max = x > y ? x : yreturn [min, max]}let minMaxArr2 = func(1,3)console.log(minMaxArr2)  // [1, 3]

1.3.2 立即执行函数

方式1

  • 多个立即函数中间如果没有;隔开,可能会报错
  • 应用场景: 可以避免定义全局变量
    let minMaxArr3 = (function (x = 0,y = 0) {let min = x > y ? y : xlet max = x > y ? x : yreturn [min, max]})(1, 3)console.log(minMaxArr3)  // [1, 3]

方式二

     let minMaxArr4 = (function (x = 0,y = 0) {let min = x > y ? y : xlet max = x > y ? x : yreturn [min, max]}(1, 3))console.log(minMaxArr4)  // [1, 3]

1.4 箭头函数

写法更简单,属于表达式函数,可以更好的实现匿名函数

  • 只有一个参数可以省略小括号
  • 如果函数体只有一行代码,可以写到一行上,并且无需写return,直接返回值。如果返回值是对象需要加小括号,例如(uname) => ({uname: uname})
  • 箭头函数没有arguments动态参数,但是有剩余参数...arr
  • 箭头函数不会创建自己的this, 它里面的this是自己的作用域链的上一层的this。例如事件回调函数使用箭头函数时,this为全局的window

使用示例:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>Title</title></head>
<body><script>const fn = (x) => {console.log(x)}fn(6)</script>
</body>
</html>

1.5 构造函数

  • 用处: 用来初始化对象
  • 声明: 虽然是常规函数。但约定命名以大写字母开头。可以给构造函数声明静态变量和静态方法
  • 实例化:
    • 只能由new操作符来创建对象
    • 如果没有参数,可以省略()
    function Person(uname) {this.uname = uname    // 动态变量this.printName = () => console.log(`hi, ${this.uname}`)   // 动态方法}Person.type = 'person'  // 静态变量Person.sayHi = () => console.log('hi')  // 静态方法const lily = new Person('lily')console.log(lily)   // {uname: 'lily', printName: ƒ}lily.printName()        // hi, lilyconsole.log(Person.type)    // personPerson.sayHi()              // hi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/830079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL商城数据库表(61-65)

61——订单结算表&#xff08;guo_settlements&#xff09; CREATE TABLE guo_settlements (settlementId int(11) NOT NULL AUTO_INCREMENT COMMENT 自增ID,settlementNo varchar(20) NOT NULL COMMENT 结算单号,settlementType tinyint(4) NOT NULL DEFAULT 0 COMMENT 结算类…

axios下载接口后端返回了json但前端得到的是blob

背景&#xff1a; 通过axios下载文件&#xff0c;正常情况下后端返回内容blob&#xff0c;前端接收并导出文件。但有时候&#xff0c;后端业务逻辑需要提示错误&#xff0c;于是返回json&#xff0c;但前端预期接收的是blob&#xff0c;所以导出去的文件内容是json字符串。 原…

3MF体积设计扩展

3MF 联盟最近宣布了他们最新的体积设计扩展&#xff08;volumetric design extension&#xff09;&#xff0c;用于通过基于体积的描述来编码几何形状和空间多样性属性。 该组织致力于推进 3D 打印的通用规范&#xff0c;目前正在新扩展达到 1.0 之前征求公众反馈。 NSDT工具推…

Linux内核驱动开发-001字符设备开发-内核中断驱动独立按键+等待队列优化

1驱动程序 /*************************************************************************> File Name: key_wait.c> Author: yas> Mail: rage_yashotmail.com> Created Time: 2024年04月23日 星期二 13时20分42秒**********************************************…

OpenCV 实现重新映射

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV 实现霍夫圆变换 下一篇 :OpenCV实现仿射变换 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 一个。使用 OpenCV 函数 cv&#xff1a;&#xff1a;remap 实现简单的重新…

thinkphp 各层简介介绍

Controller层负责和视图打交道&#xff0c;Logic层负责处理逻辑&#xff0c;沟通Controller和Model&#xff0c;Model层负责和数据库打交道&#xff0c;Service层负责封装公共服务 controller 工作&#xff1a;接受请求数据&#xff0c;与业务侧logic打交道获取结果数据返回vie…

20240428如何利用IDM下载磁链视频

缘起&#xff1a; https://weibo.com/tv/show/1034:4864336909500449 中国获奖独立纪录片《阿辉》揭秘红灯区“教父”的生存法则 5,751次观看 1年前 发布于 陕西 身为里中横 67.7万粉丝 互联网科技博主 微博原创视频博主 头条文章作者 https://weibo.com/tv/show/1034:4864…

数据通信-A

数据通信 一、数据通信网络基础二、VRP系统三、eNSP配置命令 不是从零开始&#xff0c;有一些基础&#xff0c;主要记录配置命令。一、数据通信网络基础 图标&#xff1a;主要是认识第一行。 常见术语&#xff1a;数据通信网络最基本的功能是实现数据互通。 数据载荷&#…

解决IDEA下springboot项目打包没有主清单属性

1.问题出现在SpringBoot学习中 , 运行maven打包后无法运行 报错为spring_boot01_Demo-0.0.1-SNAPSHOT.jar中没有主清单属性 SpringBoot版本为 2.6.13 Java 版本用的8 解决方法 1.执行clean 删除之前的打包 2.进行打包规范设置 2.1 3.进行问题解决 (借鉴了阿里开发社区) 使用…

[嵌入式系统-53]:嵌入式系统集成开发环境大全

目录 一、嵌入式系统集成开发环境分类 二、由MCU芯片厂家提供的集成开发工具 三、由嵌入式操作提供的集成开发工具 四、由第三方工具厂家提供的集成开发工具 一、嵌入式系统集成开发环境分类 嵌入式系统集成开发工具和集成开发环境可以按照不同的分类方式进行划分&#xff…

【LAMMPS学习】八、基础知识(5.2)粒度模型

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

将针孔模型相机 应用到3DGS

Motivation 3DGS 的 投影采用的是 CG系的投影矩阵 P P P, 默认相机的 principal point (相机光心) 位于图像的中点处。但是 实际应用的 绝大多数的 相机 并不满足这样一个设定&#xff0c; 因此我们 需要根据 f , c x , c y {f,c_x, c_y} f,cx​,cy​ 这几个参数重新构建3D …

centos 7 yum install -y nagios

centos 7 systemctl disable firewalld --now vi /etc/selinux/config SELINUXdisabled yum install -y epel-release httpd nagios yum install -y httpd nagios systemctl enable httpd --now systemctl enable nagios --now 浏览器 IP/nagios 用户名&#xff1a;…

Anaconda-用conda创建python虚拟环境常用命令

查看安装了哪些包 conda list查看当前存在哪些虚拟环境 conda env list conda info -e检查更新当前conda conda update condaPython创建虚拟环境 conda create -n your_env_name pythonx.xanaconda命令创建python版本为x.x&#xff0c;名字为your_env_name的虚拟环境。you…

Leetcode 第395场周赛 问题和解法

题目 找出与数组相加的整数 I 给你两个长度相等的数组nums1和nums2。 数组nums1中的每个元素都与变量x所表示的整数相加。如果x为负数&#xff0c;则表现为元素值的减少。 在与x相加后&#xff0c;nums1和nums2相等。当两个数组中包含相同的整数&#xff0c;并且这些整数出…

vue学习的预备知识为学好vue打好基础

目录 Vue是什么 &#xff1f;如何使用Vue &#xff1f;Vue ApiVue入口apiVue实例apiVue函数api 无构建过程的渐进式增强静态HTMLVue模块化构建工具npmyarnWebpackvue-cliVite Vue是什么 &#xff1f; 文章基于Vue3叙述。 Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于…

探秘STM32内部FLASH的读写操作

探秘STM32内部FLASH的读写操作 在STM32嵌入式系统开发中&#xff0c;内部FLASH是一个重要的存储器&#xff0c;用于存储程序代码和数据。了解如何进行内部FLASH的读写操作对于开发者来说至关重要&#xff0c;可以帮助他们实现数据的存储与更新。本文将深入探讨STM32内部FLASH的…

十大USDT交易平台大全XEX交易所

USDT是一种基于比特币区块链网络的加密代币&#xff0c;主要运用于数字货币交易平台&#xff0c;以稳定币为主。USDT的核心价值在于其与真实货币的固定兑换比率1:1&#xff0c;所以被称为Tether。随着加密货币市场的不断壮大&#xff0c;越来越多的交易平台开始支持USDT&#x…

C#发票查验开发示例、发票识别开发文档

或许有人会问&#xff0c;发票查验与发票识别接口是什么&#xff1f;简单来说&#xff0c;它只是集成在财务系统或APP等应用中的一个功能模块。只需上传发票图片&#xff0c;发票识别接口即可快速提取发票代码、号码、日期、金额、校验码等关键信息&#xff0c;发票查验接口实时…

2024深圳杯(东北三省)数学建模C题完整论文讲解(含完整python代码及所有残骸音爆位置求解结果)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2024深圳杯&#xff08;东北三省数学建模联赛&#xff09;A题多个火箭残骸的准确定位完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊…