逗号运算符的妙用

简介: 逗号运算符的妙用

前言


逗号在JavaScript中有很大的用处,一方面它是基本的分隔符,例如,在函数中传递多个参数时,使用逗号分隔;另已方面它可以作为一个运算符,从左到右依次执行。例如下面的表达式语句:


x = 8 * 2, x * 4
复制代码


这是一个使用了逗号运算符的语句,首先执行左边的部分,x = 8 * 2,即x = 16,然后执行右边的语句,x * 4 = 16 * 4 = 64,并将其返回。


几个逗号运算符的使用场景:


1. 在for循环中批量执行表达式


如果一个for循环中有多个变量需要执行表达式,可以通过逗号运算符一次性执行。


for (var i = 0; j = 10; i < 10, j < 20; i++,j++) {
    console.log(i, j);
}
复制代码


一般在for循环的末尾,只允许执行单个表达式,在这里我们使用逗号运算符将i++和j++视为同一表达式,因此可以一次执行。


2. 用于交换变量,无须额外变量


通常我们需要交换两个变量的方法是,借助一个临时变量实现,或者使用解构赋值来实现:


var a = 'a';
var b = 'b';
var c;
// 借助临时变量
c = a;
a = b;
b = c;
// 解构赋值
[a, b] = [b, a]
复制代码


现在我们又多了第三种方法,那就是使用逗号运算符:


var a = 'a';
var b = 'b';
// 方案1
a = [b, b = a][0];
// 方案2
a = [b][b = a, 0];
复制代码


3. 用于简化代码


对于特定的函数,我们可以使用逗号运算符进行简写。


if(x) {
    foo();
    return bar();
} else {
    return 1;
}
// 使用逗号运算符简写后
x ? (foo(), bar()) : 1;


相关文章
|
网络协议 数据安全/隐私保护 Windows
Windows Server 各版本搭建域控制器实现通过域管理用户(03~19)
Windows Server 各版本搭建域控制器实现通过域管理用户(03~19)
|
安全 Apache Windows
【zookeeper】在Windows上启动zookeeper
【zookeeper】在Windows上启动zookeeper
|
人工智能 自然语言处理 API
DeepSeek全尺寸模型上线阿里云百炼!
阿里云百炼平台近日上线了DeepSeek-V3、DeepSeek-R1及其蒸馏版本等六款全尺寸AI模型,参数量达671B,提供高达100万免费tokens。这些模型在数学、代码、自然语言推理等任务上表现出色,支持灵活调用和经济高效的解决方案,助力开发者和企业加速创新与数字化转型。示例代码展示了如何通过API使用DeepSeek-R1模型进行推理,用户可轻松获取思考过程和最终答案。
|
机器学习/深度学习 自然语言处理 监控
智能客服系统集成技术解析和价值点梳理
在 2024 年的智能客服系统领域,合力亿捷等服务商凭借其卓越的技术实力引领潮流,它们均积极应用最新的大模型技术,推动智能客服的进步。
841 7
|
搜索推荐 API
LangChain-16 Using Tools LangChain封装好的工具集tools
LangChain-16 Using Tools LangChain封装好的工具集tools
519 5
【寄存器开发速成】半小时入门STM32寄存器开发(一)
【寄存器开发速成】半小时入门STM32寄存器开发(一)
|
数据采集 机器学习/深度学习 算法
|
监控 测试技术
培训 | 阿里云性能测试 PTS 团队 + 国内知名测试社区 TesterHome
报名链接,点击这里。 阿里云性能测试 PTS 团队此次携手国内知名测试社区 TesterHome,将阿里生态内实践沉淀的压测、高可用体系结合阿里云对外产品化多年的经验进行一次分享和 WorkShop 的专项培训。
5705 106
|
消息中间件 存储 运维
Kafka重要配置参数全面解读(重要)
Kafka重要配置参数全面解读(重要)
1400 0
|
Swift iOS开发 开发者
【Swift开发专栏】Swift中的代码调试与错误追踪
【4月更文挑战第30天】本文详述了Swift编程中的调试与错误追踪方法。首先,通过Xcode进行代码调试,包括设置断点、查看和修改变量值、分析调用栈,以及在模拟器和真机上调试。其次,介绍了LLDB调试器,及其常用命令、条件断点和异常断点的使用。此外,文章还讨论了错误追踪,如Swift的错误处理机制,以及日志输出和自定义日志级别在问题排查中的重要性。掌握这些技巧能帮助开发者提升问题解决效率和应用质量。
544 0