当前位置: 首页 > news >正文

EasyClick JavaScript 函数

EasyClick JavaScript 函数

JavaScript 中的函数(Function)​是一等公民(First-Class Citizen),意味着它可以被赋值给变量、作为参数传递给其他函数,或作为其他函数的返回值。函数是实现代码复用、模块化和逻辑封装的核心工具。

函数的定义方式

函数声明

使用 function关键字直接声明一个函数,具有函数提升(Hoisting)​特性(即函数可在声明前调用)。

语法:

function 函数名(参数1, 参数2, ...) {// 函数体return 返回值; // 可选,无 return 时默认返回 undefined
}

示例:

function add(a, b) {return a + b;
}
console.log(add(2, 3)); // 输出 5

​函数表达式

将函数赋值给一个变量或常量,此时函数可以是匿名的(无名称)或有名称的(命名函数表达式)。​无函数提升​(需先声明后使用)。

语法:

const 变量名 = function [函数名](参数1, 参数2, ...) {// 函数体
};

​匿名函数表达式


const add = function(a, b) {return a + b;
};

命名函数表达式​(函数内部可通过名称自引用,常用于递归或调试)

const factorial = function fact(n) {return n === 0 ? 1 : n * fact(n - 1); // 内部用 fact 自调用
};
console.log(factorial(5)); // 输出 120

​箭头函数(Arrow Function,ES6+)

使用 =>符号简化函数定义,语法更简洁,​无独立this、arguments、super或 new.target​(继承外层作用域的对应属性)。

语法:

const 变量名 = (参数1, 参数2, ...) => {// 函数体return 返回值;
};

​单行表达式​:若函数体只有返回值,可省略 {}return

const add = (a, b) => a + b; // 等价于 return a + b;

​单个参数​:若只有一个参数,可省略参数外的 ()

const square = x => x * x;

​无参数​:需保留空 ()

const sayHi = () => console.log("Hi!");

函数的参数

函数参数用于接收外部传入的数据,JavaScript 对参数的处理非常灵活:

​形参(Formal Parameters)与实参(Actual Arguments)​​
•​形参​:函数定义时声明的参数(如 function add(a, b)中的 a和 b)。
•​实参​:函数调用时实际传入的值(如 add(2, 3)中的 2和 3)。

​参数的默认值(Default Parameters,ES6+)若未传入实参或实参为 undefined,可使用默认值:

 
function greet(name = "Guest") {return `Hello, ${name}!`;
}
console.log(greet()); // 输出 "Hello, Guest!"
console.log(greet("Alice")); // 输出 "Hello, Alice!"​

​剩余参数(Rest Parameters,ES6+)​
使用 ...符号将多个实参收集为一个数组(只能作为最后一个参数):

function sum(...nums) {return nums.reduce((acc, curr) => acc + curr, 0);
}
console.log(sum(1, 2, 3, 4)); // 输出 10

函数的返回值(return)

•函数通过 return语句返回结果,​只能返回一个值​(若需返回多个值,可返回数组或对象)。
•无 return或 return后无值时,默认返回 undefined

function getUser() {return { name: "Alice", age: 30 }; // 返回对象
}
console.log(getUser()); // 输出 { name: "Alice", age: 30 }function noReturn() {// 无 return,返回 undefined
}
console.log(noReturn()); // 输出 undefined

下一节>> EasyClick JavaScript 数组

http://www.dtcms.com/a/389909.html

相关文章:

  • Qt QSplineSeries详解
  • 扩散模型简介
  • [答疑]SysML模型的BDD中加了新的端口,怎样同步到IBD
  • MySQL 专题(二):索引原理与优化
  • 【脑电分析系列】第17篇:EEG特征提取与降维进阶 — 主成分分析、判别分析与黎曼几何
  • NVIDIA DOCA 环境产品使用与体验报告
  • C# Windows Service 中添加 log4net 的详细教程
  • 用 pymupdf4llm 打造 PDF → Markdown 的高效 LLM 数据管道(附实战对比)
  • 机械设备钢材建材网站 网站模版
  • Mysql8 SQLSTATE[42000] sql_mode=only_full_group_by错误解决办法
  • 【第五章:计算机视觉-项目实战之图像分类实战】2.图像分类实战-(3)批量归一化(Batch Normalization)和权重初始化的重要性
  • SQL Server 多用户读写随机超时?从问题分析到根治方案
  • 2.css的继承性,层叠性,优先级
  • OpenStack 学习笔记(四):编排管理与存储管理实践(上)
  • list_for_each_entry 详解
  • Perplexity AI Agent原生浏览器Comet
  • 颈椎按摩器方案开发,智能按摩仪方案设计
  • Sui 学习日志 1
  • 六、Java—IO流
  • 数据库 事务隔离级别 深入理解数据库事务隔离级别:脏读、不可重复读、幻读与串行化
  • 从“纸面”到“人本”:劳务合同管理的数字化蜕变
  • ARM架构——学习时钟7.2
  • VS Code 调试配置详解:占位符与语言差异
  • 锁 相关知识总结
  • caffeine 发生缓存内容被修改以及解决方案-深度克隆
  • rust编写web服务06-JWT身份认证
  • 《怪猎:荒野》制作人:PC平台对日本游戏非常重要
  • 大模型训练框架(二)FSDP
  • MySQL——系统数据库、常用工具
  • 蓝桥杯题目讲解_Python(转载)