news 2026/3/26 9:49:43

HoRain云--JavaScript函数调用的4种方式详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--JavaScript函数调用的4种方式详解

🎬 HoRain云小助手:个人主页

🔥 个人专栏: 《Linux 系列教程》《c语言教程》

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

JavaScript 函数调用

1. 函数的4种调用方式

(1) 作为普通函数调用

(2) 作为对象方法调用

(3) 使用构造函数调用(使用new关键字)

(4) 使用call()和apply()方法调用

2. 参数传递机制

3. 函数调用的注意事项

(1) 参数处理

(2) 返回值

(3) 函数提升

(4) 箭头函数的限制

4. 实际应用示例

(1) 函数作为回调函数

(2) 递归函数

(3) 使用call/apply改变this指向

5. 最佳实践


JavaScript 函数调用

JavaScript 函数有4种主要调用方式,每种方式的this指向不同。以下是详细说明:

1. 函数的4种调用方式

(1) 作为普通函数调用

function myFunction(a, b) { return a * b; } myFunction(10, 2); // 返回 20

(2) 作为对象方法调用

var myObject = { firstName: "John", lastName: "Doe", fullName: function() { return this.firstName + " " + this.lastName; } } myObject.fullName(); // 返回 "John Doe"

(3) 使用构造函数调用(使用new关键字)

function MyFunction(arg1, arg2) { this.firstName = arg1; this.lastName = arg2; } var x = new MyFunction("John", "Doe"); x.firstName; // 返回 "John"

(4) 使用call()apply()方法调用

function myFunction(a, b) { return a * b; } // 使用call()方法 myFunction.call(null, 10, 2); // 返回 20 // 使用apply()方法 myFunction.apply(null, [10, 2]); // 返回 20

2. 参数传递机制

3. 函数调用的注意事项

(1) 参数处理

(2) 返回值

(3) 函数提升

(4) 箭头函数的限制

4. 实际应用示例

(1) 函数作为回调函数

// 函数表达式适合作为回调 setTimeout(function() { console.log("Timeout completed"); }, 1000);

(2) 递归函数

function factorial(n) { if (n === 0) return 1; return n * factorial(n - 1); } console.log(factorial(5)); // 120

(3) 使用call/apply改变this指向

const person = { name: "John", greet: function(greeting) { return greeting + ", " + this.name; } }; const anotherPerson = { name: "Jane" }; console.log(person.greet.call(anotherPerson, "Hello")); // "Hello, Jane"

5. 最佳实践

  1. 避免全局函数:尽量将函数定义为对象方法,减少全局命名空间污染
  2. 使用函数表达式:当需要将函数作为参数传递时(如回调函数)
  3. 注意this指向:在需要动态this的场景(如事件处理器)中,避免使用箭头函数
  4. 检查参数:在函数内部检查必要参数是否传入
  5. 使用return:确保函数返回预期值,特别是在链式调用中

记住:JavaScript函数是对象,它们可以被赋值给变量、作为参数传递、返回其他函数,这些都是函数式编程的基础。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/24 8:55:31

OmenSuperHub终极指南:惠普游戏本性能掌控完全解决方案

OmenSuperHub终极指南:惠普游戏本性能掌控完全解决方案 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 厌倦了官方OMEN Gaming Hub的臃肿体积和频繁弹窗干扰?OmenSuperHub这款开源纯净硬件控制工具将…

作者头像 李华
网站建设 2026/3/24 9:38:24

亲测SenseVoiceSmall,AI情感识别真实体验分享

亲测SenseVoiceSmall,AI情感识别真实体验分享 最近在做语音交互项目时,一直在寻找一款既能准确转写语音,又能理解说话人情绪的模型。市面上大多数语音识别工具还停留在“听清你说什么”的阶段,而我需要的是能“读懂你的情绪”的能…

作者头像 李华
网站建设 2026/3/25 5:41:18

快速启动YOLOE容器,GPU环境配置一步到位

快速启动YOLOE容器,GPU环境配置一步到位 你是否也经历过这样的场景:好不容易找到一个前沿的开放词汇检测模型,结果卡在环境配置上——CUDA版本不匹配、PyTorch编译失败、CLIP依赖冲突、Gradio端口起不来……折腾半天,连第一张图片…

作者头像 李华
网站建设 2026/3/26 8:12:17

Docker build缓存失效真相:87%的“强制更新”其实根本没生效!用docker image history -v反向验证你的每一层是否真被重建(附自动化校验工具)

第一章:Docker build缓存失效的真相与认知误区Docker 构建缓存并非“智能记忆”,而是严格基于构建上下文、指令顺序与内容哈希的确定性机制。许多开发者误以为只要 Dockerfile 未修改,缓存就必然复用;实则任意上游层(如…

作者头像 李华
网站建设 2026/3/25 8:59:48

三分钟掌握m3u8视频下载神器:MediaGo深度体验指南

三分钟掌握m3u8视频下载神器:MediaGo深度体验指南 【免费下载链接】m3u8-downloader m3u8 视频在线提取工具 流媒体下载 m3u8下载 桌面客户端 windows mac 项目地址: https://gitcode.com/gh_mirrors/m3u8/m3u8-downloader 还在为网页视频无法保存而烦恼吗&a…

作者头像 李华