JS 函数的定义与调用


文章目录

    • 1. 普通函数-无形参
    • 2. 普通函数-有形参
    • 3. 普通函数-参数默认值
    • 4. 普通函数-返回值
    • 5. 立即执行函数
    • 6. 匿名函数
    • 7. 箭头函数
    • 8. 函数提升

1. 普通函数-无形参

函数定义时没有指定形参, 调用时仍然可以向其传递参数, 通过默认参数 arguments 获取, arguments 是一个伪数组, 用来获取实参列表

<script>// 定义函数-无形参function func() {// 将 伪数组 arguments 转为真数组let paramArray = [].slice.call(arguments)if (paramArray.length > 0) {console.dir('有参调用, 参数列表 ' + [].slice.call(arguments).toString())} else {console.log('无参调用')}}func() // 无参调用func('a', 'b') // 有参调用
</script>

2. 普通函数-有形参

  • 即使函数定义时指定了形参, 调用时仍然可以不传实参
  • 实参和形参的个数可以不符, 但是形参的顺序是不能改变的
<script>// 定义函数-有形参-有返回值function func(param1, param2) {if (!param1 && !param2) {console.log('参数未传')} else {console.log('参数1: ' + param1 + ' 参数2: ' + param2)}}func() // 无参调用func('a', 'b') // 有参调用func('a') // 形参和实参个数不符
</script>

3. 普通函数-参数默认值

<script>// 定义函数-有形参-有返回值function func(param1, param2 = '默认值') {console.log('参数1: ' + param1 + ' 参数2: ' + param2)}func('a', 'b') // 参数1: a 参数2: bfunc('a') // 参数1: a 参数2: 默认值
</script>

4. 普通函数-返回值

未显式指定返回值时, 函数默认返回 undefined

<script>// 显式指定返回值function result() {return '返回值'}console.log(result()) // 返回值// 函数默认返回值function noResult() {}console.log(noResult()) // undefined
</script>

5. 立即执行函数

  • 程序一运行就会被执行, 不需要调用
  • 如果立即执行函数前有其他代码,那么它的前一行代码, 不能省略 ;
<script>// 语法 1:( 函数定义 )()let fn;(fn = function run() {console.log('这是立即执行函数')})()// fn() 可反复调用console.log('如果立即执行函数前有其他代码,那么它的前一行代码, 不能省略 ; 号');// 语法 2:( 函数定义() )(function run() {console.log('这是立即执行函数')}())
</script>

6. 匿名函数

常用场景: 函数表达式、回调函数、立即执行函数等。

<script>// 场景 1:函数表达式const caller = function () {console.log('匿名函数')}caller()// 场景 2:回调函数function run(callback) {callback();}run(function () {console.log('匿名函数')});// 场景 3:立即执行函数(function () {console.log('匿名函数')})()
</script>

7. 箭头函数

  • 箭头函数是匿名函数的语法糖
  • 不是所有匿名函数场景都适合用箭头函数替换, 比如箭头函数就没有其他函数的默认参数 arguments
  • this 的指向由箭头函数声明的地方决定

匿名函数和箭头函数语法对比

<script>// 1. 无参的对比const fn1 = function () {}const fn1 = () => {}// 2. 单参的对比const fn2 = function (a) {}const fn2 = a => {} // 单个参数时, 箭头函数的参数列表可以省略小括号 ()// 3. 多参的对比const fn3 = function (a, b) { }const fn3 = (a, b) => {}// 4. 函数体只有一行代码的对比const fn4 = function () {return '返回值'}const fn4 = () => '返回值' // 函数体只有一行代码时, 箭头函数的函数体可以省略大括号 {}// 函数体只有一行代码并且返回的是对象时, 要在函数体外加上 ({})const fn4 = () => ({ name: '3s', age: 27 })// 5. 函数体多行代码对比const fn5 = function () {let str = '返回值'return str}const fn5 = () => {let str = '返回值'return str}
</script>

8. 函数提升

  • JS 引擎在预解析时, 会把函数声明部分提升至函数调用之前。所以 JS 编写时就算函数先调用后定义, 也可以正常运行
  • 函数表达式不会进行函数提升
<script>// 先调用func();// 后定义function func() {console.log('函数声明会被提升到函数调用之前')}/*JS 引擎预编译后, 会变成类似这段代码function func(){console.log('函数声明会被提升到函数调用之前')} func();*/
</script>

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

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

相关文章

MySQL的索引失效的原因有那些

1. 数据类型不匹配 详细说明&#xff1a;MySQL在比较不同数据类型的值时&#xff0c;可能会尝试进行隐式转换。如果这种转换导致了复杂度增加或无法直接利用索引&#xff0c;则会导致索引失效。 实例与解决方案&#xff1a; -- 错误示例&#xff1a;数据类型不匹配 select *…

迈向未来:.NET技术的持续创新与发展前景

随着信息技术的飞速发展&#xff0c;编程语言和开发框架不断涌现&#xff0c;许多技术平台以其独特的优势赢得了开发者的青睐。在这场技术的竞争中&#xff0c;.NET平台凭借其卓越的性能、广泛的生态系统以及持续创新的精神&#xff0c;成为了全球开发者的重要选择。本文将探讨…

微信小程序-基于Vant Weapp UI 组件库的Area 省市区选择

Area 省市区选择&#xff0c;省市区选择组件通常与 弹出层 组件配合使用。 areaList 格式 areaList 为对象结构&#xff0c;包含 province_list、city_list、county_list 三个 key。 每项以地区码作为 key&#xff0c;省市区名字作为 value。地区码为 6 位数字&#xff0c;前两…

Canvas指定三角形内部生成随机点

使用重心坐标&#xff08;barycentric coordinates&#xff09;或者通过面积比例的方法来确定点是否在三角形内。不过&#xff0c;对于简单的应用&#xff0c;一种常见的方法是使用随机点并检查它们是否在三角形内部。如果不在&#xff0c;就重新生成&#xff0c;直到得到足够数…

智驾感知「大破局」!新一轮混战开启

随着智能驾驶搭载率的攀升&#xff0c;舱外传感器赛道迎来新变局。 一方面&#xff0c;从近几年智驾传感器的配置变化来看&#xff0c;摄像头的主导地位显而易见。 12月10-12日&#xff0c;由德赛西威总冠名的2024&#xff08;第八届&#xff09;高工智能汽车年会暨年度金球奖…

深入解析Android Recovery系统

深入解析Android Recovery系统 引言 在Android系统中,Recovery模式是一个非常重要的组成部分。它主要用于系统的恢复、更新和修复。当用户遇到系统问题时,Recovery模式可以提供一种安全的方式来恢复系统到正常状态。本文将深入探讨Android Recovery系统的实现原理,重点分析…

Kibana8.17.0在mac上的安装

1、Kibana是什么 Kibana是与elasticsearch配套使用的数据分析与可视化工具&#xff0c;通过Kibana可以轻松与es中存储的数据进行高效的交互&#xff0c;包括数据写入、检索、删除等操作&#xff0c;并可以通过编写部分代码将数据做成各种报表&#xff0c;从而进行非常直观的统…

数字IC后端设计实现十大精华主题分享

今天小编给大家分享下吾爱IC社区星球上周十大后端精华主题。 Q1:星主&#xff0c;请教个问题&#xff0c;长tree的时候发现这个scan的tree 的skew差不多400p&#xff0c;我高亮了整个tree的schematic&#xff0c;我在想是不是我在这一系列mux前边打断&#xff0c;设置ignore p…

给bmp和png,设置BLENDFUNCTION的AlphaFormat不同参数的效果

BLENDFUNCTION是AlphaBlend用控制透明效果的重要参数。 选择一个32位的png图片&#xff0c;设置AlphaFormat 为 AC_SRC_ALPHA&#xff0c;效果如上图。 选择一个32位的png图片&#xff0c;设置AlphaFormat 为 0&#xff0c;效果如上图。 选择一个24位的bmp图片&#xff0c;设置…

ChildLife“童年时光杯”足球联赛启动 共促青少年健康成长

2024年12月21日至22日&#xff0c;由美国知名婴幼儿营养品牌ChildLife童年时光赞助的“童年时光杯”青少年足球联赛将在上海拉开帷幕。本次赛事U7/U8组别共有16支足球队参赛&#xff0c;包括上海幸运星足球俱乐部旗下的明星球队&#xff0c;以及其他青少年俱乐部的优秀队伍&…

面向对象的基本原则【学习、记录】

1、单一职责原则定义 一个对象应该只包含单一的职责&#xff0c;并且该职责被完整地封装在一个类中。就一个类而言&#xff0c;应该仅有一个引起它变化的原因。 2、开闭原则定义 一个软件实体应当对扩展开放&#xff0c;对修改关闭。 3、里氏代换原则定义 如果对每一个类型为S的…

什么是根服务器?有什么作用?

你知道什么是根服务器吗?在互联网的庞大架构中&#xff0c;根服务器很多人对它的了解并不深入。那么&#xff0c;根服务器到底是什么&#xff0c;它有什么作用呢? 什么是根服务器? 根服务器是互联网域名系统(DNS)的一部分&#xff0c;负责管理和维护最顶层的域名信息。简单…

MTK--mt7921 usb wifi debug

文章目录 1、代码编译2、配置文件修改3、Wifi设置命令4、Wifi debug 淘宝随便买个7921的usb wifi。 1、代码编译 export TEMPLATECONF${PWD}/meta/meta-mediatek-mt8518/conf/base/aud8518sp2-slc-32b-7921-c4a-user source meta/poky/oe-init-build-env bitbake mtk-image-au…

日志层次结构及logger.propagate的作用

一、Python logging 模块的层次结构 Python 的 logging 模块提供了一个灵活的日志系统&#xff0c;适用于各种规模的应用程序。其核心设计基于层次化的命名系统&#xff0c;使得日志记录可以按照组织结构进行管理和配置。 1. Logger&#xff08;日志器&#xff09; 定义&…

如何配置OSB连接数据连接/读取超时

1.Oracle DB OSB中的DBAdapter的查询超时参数配置没用&#xff0c;要解决接口超时问题&#xff0c;需要在console中的数据源配置超时参数&#xff1a; oracle.net.CONNECT_TIMEOUT30000 oracle.net.READ_TIMEOUT30000 添加图片注释&#xff0c;不超过 140 字&#xff08;可选…

一起学Git【第六节:查看版本差异】

git diff是 Git 版本控制系统中用于展示差异的强大工具。他可以用于查看文件在工作区、暂存区和版本库之间的差异、任意两个指定版本之间的差异和两个分支之间的差异等,接下来进行详细的介绍。 1.显示工作区与暂存区之间的差异 # 显示工作区和暂存区之间的差异,后面不加参数…

Python数据处理——re库与pydantic的使用总结与实战,处理采集到的思科ASA防火墙设备信息

目录 Python正则表达式re库的基本用法 引入re库 各函数功能 总结 使用方法举例 正则表达式语法与书写方式 正则表达式的常用操作符 思科ASA防火墙数据 数据1 数据2 书写正则表达式 Python中pydantic的使用 导入基础数据模板 根据数据采集目标定义Pydantic数据类型…

Yolo11改进策略:Head改进|DynamicHead,利用注意力机制统一目标检测头部|即插即用

摘要 论文介绍 本文介绍了一种名为DynamicHead的模块,该模块旨在通过注意力机制统一目标检测头部,以提升目标检测的性能。论文详细阐述了DynamicHead的工作原理,并通过实验证明了其在COCO基准测试上的有效性和效率。 创新点 DynamicHead模块的创新之处在于它首次尝试在一…

`we_chat_union_id IS NOT NULL` 和 `we_chat_union_id != ‘‘` 这两个条件之间的区别

文章目录 1、什么是空字符串&#xff1f;2、两个引号之间加上空格 好的&#xff0c;我们来详细解释一下 we_chat_union_id IS NOT NULL 和 we_chat_union_id ! 这两个条件之间的区别&#xff0c;以及它们在 SQL 查询中的作用&#xff1a; 1. we_chat_union_id IS NOT NULL 含…

如何利用AWS监听存储桶并上传到tg bot

业务描述&#xff1a; 需要监听aws的存储中的最新消息&#xff0c;发送新的消息推送到指定tg的频道。 主要流程&#xff1a; 1.上传消息到s3存储桶&#xff08;不做具体描述&#xff09; 2.通过aws的lambda监听s3存储桶的最新消息&#xff08;txt文件&#xff09; 3.将txt文件…