JS中的值传递和引用传递

JS中的值传递和引用传递

JS没有引用传递 (arguments除外)

  • 值传递:内存独立,互不影响

  • 引用传递:共享一块内存空间,指向同一个地址

var a = {}
var b = a 
b.n = 3
a // {n:3}

wechat_2025-10-20_092618_604

var a = {}
var b = a 
b = {n:3}
a // {}

wechat_2025-10-20_092810_642

// arguments
function fn(a) {
  a = 100;                   // 修改形参
  console.log(arguments[0]); // 输出 100(与形参同步)
}
fn(10);

function fn(a) {
  arguments[0] = 100;        // 修改 arguments
  console.log(a);            // 输出 100(与 arguments 同步)
}
fn(10);

但在ES6之后,具有真正的引用传递

ES模块具名导出是引用传递

export let a = 1

setTimeout(() => {
  a++
},1000)
import {a as k} from './index.js'

console.log(k)   // 1
setTimeout(() => {
  console.log(k) // 2
},1500)
posted @ 2025-10-20 09:57  原语  阅读(5)  评论(0)    收藏  举报