Blog スタッフブログ

JavaScript WEB制作 システム開発

[jQuery]参照渡しと値渡し

システム開発担当のTFです。

概要

  • Objectの変数を関数にいれたり、そのまま変数に入れた場合、参照渡しとなり、渡された側で値を変更すると、元の変数もかわる
  • Objectの値渡しをする際は、json文字列化し、それを戻すと別Objectの変数扱いとなる

サンプル

// 参照渡し
	var a, b;
	a = [0,1,2];
	b = a;
	b[0] = 3;

	// a が [3,1,2]
	// b が [3,1,2]

// 参照渡し
	var a,b;
	a = [0,1,2];
	
	b = test(a);
	
	// a が [3,1,2]
	// b が [3,1,2]
	
	function test(work){
		work[0] = 3;
		return work;
	}

// 値渡し
	var a, b;
	a = [0,1,2];
	b = JSON.stringify(a); // JSON文字列化
	b = JSON.parse(b); // JSON文字列化したものを戻す
	b[0] = 3;

	// a が [0,1,2]
	// b が [3,1,2]
	
// 参照渡し
	var a,b;
	a = [0,1,2];
	
	b = test(a);
	
	// a が [0,1,2]
	// b が [3,1,2]
	
	function test(work){
		work = JSON.stringify(work); // JSON文字列化
		work = JSON.parse(work); // JSON文字列化したものを戻す
		work[0] = 3;
		
		return work;
	}