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

将函数赋值给变量时,变量存储的是函数本身还是引用?

函数赋值给变量时的存储机制和对象一致吗?

是的,完全遵循相同的流程。

在JavaScript中,函数属于Function类型的对象,所以当你把函数赋值给变量时,变量存储的并不是函数的代码本身,而是指向内存中该函数对象所在位置的引用值。

你可以通过以下代码验证这一点:

// 定义初始函数
function sayHello() {
  console.log('Hello!');
}

// 将函数赋值给新变量
const greet = sayHello;

// 让原变量指向一个新函数
sayHello = function() {
  console.log('Hi there!');
};

// 调用greet,输出原函数的内容——说明greet保存的是原函数的引用
greet(); // 输出: Hello!
// 调用sayHello,输出新函数的内容
sayHello(); // 输出: Hi there!

这个例子里,greet保存的是最初sayHello指向的函数对象的引用,所以即使后续修改了sayHello的指向,greet依然指向原来的函数对象,这直接证明了变量存储的是引用而非函数本身。

另外,也可以通过全等判断来确认两个变量是否指向同一个函数对象:

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

const sum = add;

console.log(sum === add); // 输出: true,说明两个变量指向内存中同一个函数对象

简单总结:函数作为对象的一种,赋值给变量时的逻辑和普通对象完全一致——变量存储的是指向该函数在内存中位置的引用值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:48:24