You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何获取函数调用时传入的原始变量名

获取函数调用时的原始变量名

在JavaScript里,函数调用时传递的是变量的值,而不是变量的标识符本身,所以没办法直接通过形参SOURCE拿到外部的MyVariable这种原始变量名——你之前用Object.keys({SOURCE})[0]只能拿到形参的名字"SOURCE",就是因为这个原因。

不过有个简单可靠的办法能实现你想要的效果:用对象字面量传递参数,利用ES6的对象属性简写语法,把变量名变成对象的键。

具体实现代码

function CheckFunction(obj) {
  // 获取对象的唯一键(也就是原始变量名)
  const varName = Object.keys(obj)[0];
  const value = obj[varName];

  // 检查是否为数字
  const isNumber = typeof value === 'number' && !isNaN(value);
  console.log(`${varName} ${isNumber ? 'is a number.' : 'is not a number.'}`);
}

// 调用示例
const Area = 100;
const Name = "Alice";
CheckFunction({ Area }); // 输出 "Area is a number."
CheckFunction({ Name }); // 输出 "Name is not a number."

原理说明

当你写CheckFunction({ Area })时,这是ES6的简写语法,等价于CheckFunction({ Area: Area })——对象的键就是你传入的原始变量名Area,值是变量的实际内容。函数内部通过Object.keys(obj)[0]就能拿到这个键名,同时获取对应的值做检查,完美实现你要的输出效果。

不推荐的方法(仅供了解)

有些方案会尝试解析函数的调用栈(比如用new Error().stack)或者解析函数的源代码字符串,但这种方法兼容性差,而且很容易因为代码压缩、环境变化失效,绝对不建议在生产环境使用。上面的对象传参法是最稳妥的。

内容的提问来源于stack exchange,提问作者Rope3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:04:55