热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaScript函数详解

本文详细介绍了JavaScript中函数的基本概念和高级用法,包括函数的声明、参数传递、返回值、函数提升、函数表达式、IIFE即时调用函数表达式以及函数作用域等内容。

一、函数的基本概念

在 Javascript 中,函数是一种特殊的对象,可以通过关键字 function 来声明。函数的名称是一个标识符,用于区分不同的函数。

函数的基本语法如下:

function 函数名() { // 代码块 } 

二、函数的基本用法

1. 形参与实参

函数可以接受多个参数,这些参数分为形参(形式参数)和实参(实际参数)。实参按照顺序赋值给形参。如果实参的数量少于形参的数量,未赋值的形参默认值为 undefined

通过 arguments 对象可以访问所有传递给函数的参数,并且可以修改这些参数的值。

 

2. 不定参数实现重载功能

通过 arguments.length 可以获取传递给函数的实际参数数量,从而实现函数的重载功能。

 

3. 函数的返回值

函数可以包含多个 return 语句,但只会执行第一个遇到的 return 语句并返回相应的值。

4. 函数作为参数

函数可以作为参数传递给其他函数,从而实现更复杂的逻辑。

 

三、函数的声明与表达式

1. 函数声明

函数声明总是有名函数,可以在声明之前调用,这是由于函数提升机制。

 

2. 函数表达式

函数表达式可以是匿名函数或有名函数,但有名函数的名字只能在函数内部使用。

 

使用函数表达式时,变量会被提升,但函数体不会被提升,因此在声明之前调用会报错。

 

四、函数进阶用法

1. IIFE 即时调用函数表达式

IIFE 是 Immediately Invoked Function Expression 的缩写,即立即调用的函数表达式。通过将函数转换为表达式并在定义时立即调用,可以实现局部作用域,避免污染全局命名空间。

 

2. 函数作用域

作用域是指变量的有效范围。Javascript 中主要有两种作用域:全局作用域和函数作用域。

全局作用域

所有在 script 标签中的代码都处于全局作用域中。全局作用域在页面加载时创建全局对象(Global Object),在页面关闭时销毁。全局作用域中的变量是全局对象的属性。

函数作用域

在函数内部定义的代码处于函数作用域中。函数执行时创建活动对象(Active Object),函数执行结束后销毁。函数作用域中的变量是活动对象的属性。


推荐阅读
  • 本打算教一步步实现koa-router,因为要解释的太多了,所以先简化成mini版本,从实现部分功能到阅读源码,希望能让你好理解一些。希望你之前有读过koa源码,没有的话,给你链接 ... [详细]
  • 本文探讨了如何在游戏启动画面中移除广告,特别是在游戏数据加载期间(大约5-6秒)广告会短暂显示的问题。通过调整XML布局和代码逻辑,可以实现广告的延迟加载或完全移除。 ... [详细]
  • 本文介绍了 Oracle SQL 中的集合运算、子查询、数据处理、表的创建与管理等内容。包括查询部门号为10和20的员工信息、使用集合运算、子查询的注意事项、数据插入与删除、表的创建与修改等。 ... [详细]
  • 在运行于MS SQL Server 2005的.NET 2.0 Web应用中,我偶尔会遇到令人头疼的SQL死锁问题。过去,我们主要通过调整查询来解决这些问题,但这既耗时又不可靠。我希望能找到一种确定性的查询模式,确保从设计上彻底避免SQL死锁。 ... [详细]
  • 使用 jQuery 实现页面加载进度条
    页面加载进度条是提升用户体验的重要工具,通过在页面头部显示一个加载状态,并在页面完全加载后隐藏,可以有效减少用户的等待焦虑。本文将详细介绍如何使用 jQuery 实现这一功能。 ... [详细]
  • 本文介绍了如何使用 VBScript 脚本在 IE7 上安装 Windows 序列号的方法。对于使用超级解霸的用户,如果遇到 .vbs 文件无法正常运行的问题,文中也提供了相应的解决办法。 ... [详细]
  • 尽管Medium是一个优秀的发布平台,但在其之外拥有自己的博客仍然非常重要。这不仅提供了另一个与读者互动的渠道,还能确保您的内容安全。本文将介绍如何使用Bash脚本将Medium文章迁移到个人博客。 ... [详细]
  • pypy 真的能让 Python 比 C 还快么?
    作者:肖恩顿来源:游戏不存在最近“pypy为什么能让python比c还快”刷屏了,原文讲的内容偏理论,干货比较少。我们可以再深入一点点,了解pypy的真相。正式开始之前,多唠叨两句 ... [详细]
  • 本文通过一个简单的示例,展示如何使用ASP技术生成HTML文件。示例包括两个页面:首页index.htm和处理页面send.asp。 ... [详细]
  • 驱动程序的基本结构1、Windows驱动程序中重要的数据结构1.1、驱动对象(DRIVER_OBJECT)每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱 ... [详细]
  • 本文介绍了如何通过 AJAX 发送请求到后端控制器,并将返回的 JSON 数据解析后在前端页面上显示。具体步骤包括发送 AJAX 请求、解析 JSON 字符串和遍历数据。 ... [详细]
  • 在iOS开发中,多线程技术的应用非常广泛,能够高效地执行多个调度任务。本文将重点介绍GCD(Grand Central Dispatch)在多线程开发中的应用,包括其函数和队列的实现细节。 ... [详细]
  • RocketMQ 运维监控实践指南
    本文详细介绍了如何实现 RocketMQ 的运维监控,包括监控平台的搭建、常用运维命令及其具体用法。适合对 RocketMQ 监控感兴趣的读者参考。 ... [详细]
  • 图数据库与传统数仓实现联邦查询使用CYPHER实现从关系数据库过滤时间序列指标一、MySQL得到研报实体在Oracle中的唯一ID二、Oracle中过滤时间序列数据三、CYPHER ... [详细]
  • 在项目需要国际化处理时,即支持多种语言切换的功能,通常有两种方案:单个包和多个包。本文将重点讨论单个包的实现方法。 ... [详细]
author-avatar
追梦的青春灬_176
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有