讲师中心 微信公众号
AI工具推荐 视频效率加速

javascript函数如何定义_怎样传递参数和返回值【教程】

陌墨同学_2224

陌墨同学_2224

发布时间:2026-01-22 17:34:02

|

404人浏览过

|

来源于php中文网

原创

优先用function声明需提前调用的函数,用函数表达式处理回调、导出等场景;JS按共享传递,原始类型传值、对象传地址副本;箭头函数无this且不可构造。

javascript函数如何定义_怎样传递参数和返回值【教程】

函数声明和函数表达式怎么选

JavaScript 里定义函数主要就两种方式:function 声明和函数表达式。声明会提升(hoist),意味着你可以在定义前调用它;表达式不会,必须先赋值再调用。

常见错误是以为 const myFn = function() {} 和 function myFn() {} 行为一致,结果在声明前调用时报 ReferenceError 或 TypeError。

  • 需要立即可用、逻辑清晰的入口函数,优先用 function 声明
  • 要传给 setTimeout、map 或作为模块导出时,用函数表达式更安全
  • 箭头函数是表达式的一种,没有自己的 this 和 arguments,不能用作构造函数

参数传递:值 vs 引用,还有 rest 参数

JS 没有真正的“引用传递”,只有“按共享传递”——原始类型(string、number、boolean)传的是副本;对象、数组、函数传的是内存地址的副本。改对象属性会影响原对象,但重新赋值不会。

容易踩的坑:function foo(arr) { arr = [1,2]; } 不会改变外部数组;而 arr.push(3) 会。

立即学习“Java免费学习笔记(深入)”;

JS X Monitor
JS X Monitor

X.com (Twitter) 账号监控自动化:定时抓取指定账号最新推文,发现新内容即时推送通知。

下载
  • 用 ...args 接收不定数量参数,比 arguments 更灵活且是真数组
  • 默认参数写在形参列表里,如 function fn(a = 1, b = []),注意避免 b = b || [] 这种老写法(false、0、'' 都会被覆盖)
  • 解构参数可直接从对象或数组取值,比如 function({ name, age }) { return `${name} is ${age}`; }

return 语句到底返回什么

没写 return 的函数默认返回 undefined;写了但后面没值(如 return;)也一样。常见错误是忘了在条件分支里都写 return,导致部分路径返回 undefined。

比如异步函数里写 return fetch(...).then(...),实际返回的是 Promise,不是 then 里的值——得用 async/await 或链式 return 才能穿透。

  • 单表达式箭头函数省略 return 和花括号,但若返回对象字面量,必须加括号:() => ({ a: 1 }),否则被解析成代码块
  • return 后换行会导致自动插入分号,return 后接对象或数组字面量时务必写在同一行
  • 函数内多个 return 是合法的,适合提前退出,比如校验失败直接 return null

箭头函数和普通函数的关键区别

箭头函数没有 this、arguments、super 或 new.target,它的 this 指向外层词法作用域。所以不能用作事件回调并期望 this 指向 DOM 元素,也不能用 call/apply 改变 this。

典型误用:document.addEventListener('click', () => console.log(this)) —— 这里 this 是全局或模块顶层,不是触发事件的元素。

  • 需要动态 this(如 Vue 方法、React 类组件事件处理)必须用普通函数
  • 闭包中捕获外层变量更简洁,比如 list.map(x => x * factor),不用显式写 function(x) { return x * factor; }
  • 不能用 new 调用箭头函数,否则报 TypeError: xxx is not a constructor

函数体内的执行逻辑越简单,越容易预测返回值和副作用;参数设计是否合理,往往比语法细节更能决定后期维护成本。别为了省几行代码把参数塞成一个大对象,也别在箭头函数里强行模拟 this 绑定。

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6719

2023.08.02

java中boolean的用法
java中boolean的用法

在Java中,boolean是一种基本数据类型,它只有两个可能的值:true和false。boolean类型经常用于条件测试,比如进行比较或者检查某个条件是否满足。想了解更多java中boolean的相关内容,可以阅读本专题下面的文章。

2130

2023.11.13

java boolean类型
java boolean类型

本专题整合了java中boolean类型相关教程,阅读专题下面的文章了解更多详细内容。

163

2025.11.30

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

549

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1698

2024.03.01

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

2278

2023.09.20

java值传递和引用传递有什么区别
java值传递和引用传递有什么区别

java值传递和引用传递的区别:1、基本数据类型的传递;2、对象的传递;3、修改引用指向的情况。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

166

2024.02.23

go语言引用传递
go语言引用传递

本专题整合了go语言引用传递机制,想了解更多相关内容,请阅读专题下面的文章。

4357

2025.06.26

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

100

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app快速上手
uni-app快速上手

共0课时 | 0人学习

Vue 教程
Vue 教程

共42课时 | 17.3万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 2.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn