函数是引用类型的

function a() {}
a.deps = []

let b = a
b.deps = [123]

console.log(a.deps); // [123]

JavaScript中,函数实际上是一种对象。当你定义一个函数a时,你实际上是在创建一个函数对象。这个函数对象可以拥有自己的属性,比如你在代码中给a添加了一个名为deps的属性。

b = a 时,只是将内存的引用赋值给了b,实际上ba都指向同一个内存地址(a函数),这就是引用类型的概念

当你执行let b = a时,你不是在创建一个新的函数对象,而是在创建一个指向函数a的引用。换句话说,ba现在都指向同一个函数对象。因此,当你通过b来修改deps属性时,实际上是修改了这个函数对象的deps属性,而a也指向同一个对象,所以a.deps也会反映出这个变化。
因此,在你提供的代码示例中,当你通过b设置了b.deps = [123],实际上也是修改了a所指向的那个函数对象的deps属性。最终,当你打印a.deps时,它会显示为[123]
这里的关键概念是“引用类型”的理解。在JavaScript中,对象(包括函数和数组等)都是引用类型。当你将一个引用类型的值赋给一个变量或作为参数传递时,实际上传递的是该对象的引用,而不是一个全新的对象副本。这种行为在处理复杂数据结构时非常重要,理解这一点有助于避免理解代码行为时出现混淆。

你可能感兴趣的:(函数是引用类型的)