首页 > web前端 > js教程 > 正文

JavaScript 的默认参数在函数调用时是如何被求值和赋值的?

狼影
发布: 2025-10-09 08:14:01
原创
746人浏览过
JavaScript默认参数在函数调用时动态求值,仅当实参为undefined时生效,支持依赖运行时状态和前置参数引用,但不触发null等假值,默认参数提升函数灵活性并体现动态特性。

javascript 的默认参数在函数调用时是如何被求值和赋值的?

JavaScript 的默认参数在函数调用时才被求值,并且只在对应实参为 undefined 时生效。

默认参数的求值时机:调用时动态计算

与许多静态语言不同,JavaScript 的默认参数不是在函数定义时求值,而是在每次函数被调用且需要使用默认值时才执行表达式。

这意味着默认参数可以依赖运行时的状态,比如其他变量、函数返回值,甚至是其他参数(只要顺序正确)。

例如:

function logTime(time = Date.now()) {<br>  console.log(time);<br>}
登录后复制

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

每次调用 logTime() 没有传参时,Date.now() 都会重新执行,返回当前时间戳。如果函数定义时就求值,那所有调用都会用同一个时间。

赋值条件:仅当参数为 undefined

默认参数只在传入的值是 undefined 时才会被使用。其他“假值”如 nullfalse0"" 都不会触发默认值。

怪兽AI数字人
怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人 44
查看详情 怪兽AI数字人
示例说明:

function greet(name = "游客") {<br>  console.log("你好," + name);<br>}
登录后复制

  • greet(); → 输出 “你好,游客”(name 是 undefined)
  • greet(undefined); → 同样输出 “你好,游客”
  • greet(""); → 输出 “你好,”(空字符串被视为有效值,不触发默认)
  • greet(null); → 输出 “你好,null”(null 不是 undefined)

参数之间的相互引用

默认参数可以引用前面已定义的参数,因为它们按顺序从左到右求值。

function multiply(a, b = a * 2) {<br>  return a * b;<br>}
登录后复制

multiply(3); → 返回 18(b 默认为 3 * 2)

但不能引用后面的参数,否则会报错或得到 undefined。

基本上就这些。默认参数的设计让函数更灵活,同时保持了运行时的动态特性。理解它的求值时机和触发条件,能避免一些意料之外的行为。

以上就是JavaScript 的默认参数在函数调用时是如何被求值和赋值的?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号