<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>omiga &#187; 赋值</title>
	<atom:link href="http://omiga.org/blog/archives/tag/%e8%b5%8b%e5%80%bc/feed" rel="self" type="application/rss+xml" />
	<link>http://omiga.org/blog</link>
	<description>简单就好</description>
	<lastBuildDate>Mon, 06 Feb 2012 17:39:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>javascript的赋值</title>
		<link>http://omiga.org/blog/archives/368</link>
		<comments>http://omiga.org/blog/archives/368#comments</comments>
		<pubDate>Fri, 12 Sep 2008 05:43:08 +0000</pubDate>
		<dc:creator>omiga</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[赋值]]></category>

		<guid isPermaLink="false">http://omiga.org/blog/?p=368</guid>
		<description><![CDATA[var a = "hello,world!"; var b = a; a = "hello,omiga~"; alert(a); // "hello,omiga~"; alert(b); // "hello,world!"; //-------------------------- var c = 5; var d = c; c++; alert(c); // 6 alert(d); // 5 //-------------------------- var e = true; var f = e; e = !e; alert(e) // false; alert(f) // true; //-------------------------- var i = [...]]]></description>
			<content:encoded><![CDATA[<pre>var a = "hello,world!";
var b = a;
a = "hello,omiga~";
alert(a); // "hello,omiga~";
alert(b); // "hello,world!";
//--------------------------
var c = 5;
var d = c;
c++;
alert(c); // 6
alert(d); // 5
//--------------------------
var e = true;
var f = e;
e = !e;
alert(e) // false;
alert(f) // true;
//--------------------------
var i = null;
var j = i;
i = !null;
alert(i); // true
alert(j); // null
//--------------------------
var m = [1,2,3,4,5];
var n = m;
m.push(10);
alert(m); // [1,2,3,4,5,10]
alert(n); // [1,2,3,4,5,10]
n.pop();
alert(m); // [1,2,3,4,5]
alert(m); // [1,2,3,4,5]
//--------------------------
var s = {"name":"omiga","url":"http://omiga.org"};
var t = s;
s.name = "wondger";
alert(s.name); // "wondger"
alert(t.name); // "wondger"
t.name = "omiga";
alert(t.name); // "omiga"
alert(s.name); // "omiga"</pre>
<p><a href="http://omiga.org/lab/js_set/js_set01.html" target="_blank">运行代码</a></p>
<p>结论：javascript中变量的赋值根据数据类型而采用不同的赋值方式。对于数组类型，对象类型采用引用赋值；而对于其他数据类型采用按值赋值（重新分配内存）。<strong>这是一个错误的结论，请看下文。</strong></p>
<p>PS：将一个变量的值赋给另外一个变量，当然是将其引用进行赋值，不会重新申请内存空间。比如：首先声明的变量a=”hellow,world!”，假设分配内存空间“12345”，那么b=a后，b也指向“12345”的内存空间。但是a=”hello,omiga~”语句会重新为值”hello,omiga~”分配内存“23456”，a也重新指向“23456”，b却依然指向“12345”。但是以上代码中的数组和JSON为什么并没有随其值得改变而改变？因为数组和JSON都只是改变的其内的元素/属性，只是对内存进行了重写，而未重新分配内存，仍然指向同一内存，故会有以上测试结果。我们可以测试为其重新分配内存的情况。</p>
<pre>var m = [1,2,3,4,5];
var n = m;
m = [1,2,3,4,5,10];
alert(m); // [1,2,3,4,5,10]
alert(n); // [1,2,3,4,5] 重新分配内存后m和n指向不同的内存空间，彼此不再影响
n.pop();
alert(m); // [1,2,3,4,5,10]
alert(n); // [1,2,3,4]
//--------------------------
var s = {"name":"omiga","url":"http://omiga.org"};
var t = s;
s = {"name":"wondger","url":"http://omiga.org"};
alert(s.name); // "wondger"
alert(t.name); // "omiga" 重新分配内存后t和s指向不同的内存空间，彼此不再影响
t.name = "omiga_w";
alert(s.name); // "wondger"
alert(t.name); // "omiga_w"</pre>
<p><a href="http://omiga.org/lab/js_set/js_set02.html" target="_blank">运行代码</a></p>
<hr />
<p><small>© omiga for <a href="http://omiga.org/blog">omiga</a>, 2008. |
<a href="http://omiga.org/blog/archives/368">Permalink</a> |
<a href="http://omiga.org/blog/archives/368#comments">4 comments</a> |
Add to
<a href="http://del.icio.us/post?url=http://omiga.org/blog/archives/368&title=javascript的赋值">del.icio.us</a>
<br/>
Post tags: <a href="http://omiga.org/blog/archives/tag/javascript" rel="tag">javascript</a>, <a href="http://omiga.org/blog/archives/tag/%e8%b5%8b%e5%80%bc" rel="tag">赋值</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://omiga.org/blog/archives/368/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

