<span id="Label3"></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">To say the method of assigning JS to the first to explain the value of JS type: basic type and reference Type.</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"></span></p></p><p><p><span style="font-size: 16px; font-family: ‘Microsoft YaHei‘;">1. Basic Type</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">The basic data Types Are: Undefined,boolean,number,string,null. The base type is stored in the stack, and access is accessed by value, which means that you can manipulate the actual values stored in the Variable.</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"></span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">When the basic type of data is assigned a value, the actual value is assigned, A and B are not associated, B is copied from a and is independent of each other. (the literal is the basic Type)</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">var a=10;</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">var b=a;</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><em></em></span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">Console.log (a + ', ' +b); 10,10</span><br><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">a++;</span><br><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">Console.log (a + ', ' +b)//11,10</span><br><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><em id="__mceDel" style="line-height: 1.5;"><em id="__mceDel" style="line-height: 1.5;"></em></em></span></p></p><p><p><span style="font-size: 16px; font-family: ‘Microsoft YaHei‘;">2. Reference type</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">A reference type refers to an object. You can have properties and methods, and we can modify their properties and METHODS. The reference object is stored in the stack by storing the object variable name and the address of the object in the heap, and storing the data in the HEAP.</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">The object uses a reference Assignment. When we assign an object to a new variable, the assignment is actually the address of the object in the heap, not the data in the HEAP. That is, two objects point to the same storage space, regardless of which object changes, is actually changing the contents of the storage space, therefore, two objects are Linkage.</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"></span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 16px;">3. Array is a reference type</span></span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">Let's first look at an example:</span></p></p><p><p><span class="kd" style="font-family: ‘Microsoft YaHei‘; font-size: 15px;">var <span class="nx">a <span class="o">= <span class="p">[<span class="mi">1<span class="p">,<span class="mi">2<span class="p">,<span class="mi">3<span class="p">];</span> </span> </span> </span> </span> </span> </span> </span> </span></span></p></p><p><p> <span class="kd" style="font-family: ' Microsoft yahei '; font-size:15px;"><span class="nx"><span class="o">< Span class= "p" ><span class="mi"><span class="p"><span class="mi"><span class="p"><span class="mi"> <span class="p"><span class="kd">var <span class="nx">b <span class="o">= <span class="nx">a<span class="p" ; < span> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></p></p><p><p> <span class="kd" style="font-family: ' Microsoft yahei '; font-size:15px;"><span class="nx"><span class="o">< Span class= "p" ><span class="mi"><span class="p"><span class="mi"><span class="p"><span class="mi"> <span class="p"><span class="kd"><span class="nx"><span class="o"><span class="nx"><span class="p"><span class="nx">a <span class="o">= <span class="p">[<span class="mi">4<span class="p">,<span class="mi">5<span class="p">,<span class="mi">6<span class="p" "; < span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span></span></span></span></span></span></span></span></span></span></span></p></p><p><p><span class="kd" style="font-family: ‘Microsoft YaHei‘; font-size: 15px;"><span class="nx"><span class="o"><span class="p"><span class="mi"><span class="p"><span class="mi"><span class="p"><span class="mi"><span class="p"><span class="kd"><span class="nx"><span class="o"><span class="nx"><span class="p"><span class="nx"><span class="o"><span class="p"><span class="mi"><span class="p"><span class="mi"><span class="p"><span class="mi"><span class="p"><span class="nx">Alert<span class="p">(<span class="nx">b<span class="p">); <span class="c1">//[1,2,3]</span> </span> </span> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">It seems that the array is the same as the base type: But:</span></p></p><p><p><span class="kd" style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">var <span class="nx">a <span class="o">= <span class="p">[<span class="mi">1<span class="p">,<span class="mi">2<span class="p">,<span class="mi">3<span class="p">];</span> </span> </span> </span> </span> </span> </span> </span> </span></span></p></p><p><p><span class="kd" style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span class="nx"><span class="o"><span class="p"><span class="mi"><span class="p"><span class="mi"><span class="p"><span class="mi"><span class="p"><span class="kd">var <span class="nx">b <span class="o">= <span class="nx">a<span class="p">;</span> </span> </span> </span></span></span></span></span></span></span></span></span></span></span></span></p></p><p><p> <span class="kd" style="font-size:15px font-family: ' Microsoft yahei ';"><span class="nx"><span class="o">< Span class= "p" ><span class="mi"><span class="p"><span class="mi"><span class="p"><span class="mi"> <span class="p"><span class="kd"><span class="nx"><span class="o"><span class="nx"><span class="p"><span class="nx">a <span class="nx" . <span>pop<span class="p"> () </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span></span></span></span></span></span></p></p><p><p><span class="kd" style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span class="nx"><span class="o"><span class="p"><span class="mi"><span class="p"><span class="mi"><span class="p"><span class="mi"><span class="p"><span class="kd"><span class="nx"><span class="o"><span class="nx"><span class="p"><span class="nx"><span class="p"><span class="nx"><span class="p"><span class="nx">Alert<span class="p">(<span class="nx">b<span class="p">); <span class="c1">//[1,2]</span> </span> </span> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">What's going on? Because: (knowing the Explanation)</span></p></p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><em>A = [4,5,6];//changes a reference itself, does not change the array object, A and B are not related. </em></span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><em>A.pop ();//change is an array object, a reference does not change. </em></span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">b <span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><em>= A;//the operation, B points directly to the array object, not B to a,a and then to the Array. </em></span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><em>//so Changing a reference does not affect the B reference, changing the array Object Can. </em></span></span><br><br><span style="font-size: 13px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 13px; font-family: ‘Microsoft YaHei‘;"><em>Intopass</em></span></span><br><span style="font-size: 13px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 13px; font-family: ‘Microsoft YaHei‘;"><em>links: https://www.zhihu.com/question/26042362/answer/31903017</em></span></span><br><span style="font-size: 13px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 13px; font-family: ‘Microsoft YaHei‘;"><em>source: know</em></span></span><br><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><em><br></em></span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">the question is the same as the one I mentioned earlier in the React todo-list article:</span></span><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">var tasks=this.state.data;</span><br><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">Tasks=tasks.filter (function (i) {</span><br><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">Return i.index!=taskid;</span><br><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">});</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">Since the filter function returns a new array, although it is still being received with tasks, the tasks point is already a new array, so tasks and data are no longer related. (concat also returns a new Array)</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">While the push and splice functions operate on the original array, the so-called operation in the original array refers to the invariant, so tasks and data are Associated.</span></p></p><p><p></p></p><p><p><span style="font-size: 16px; font-family: ‘Microsoft YaHei‘;">4. Parameter Passing</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">The function parameter of JS is passed as a value pass.</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">When you pass in a primitive type parameter: it's just a copy of the content to i, and I has no relationship with Age.</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">function Setage (i)</span></p></p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">{</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">Alert (i);//24</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">I =;</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">Alert (i); The change of//18,i will not affect the age outside</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">};</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"> </span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">var age =;</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">setage (age);</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">Alert (age);//24</span></span><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">When an incoming parameter is a reference type:</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">function SetName (obj)</span></p></p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">{</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">obj.name = ' haha ';</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">};</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"> </span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">var obj2 = new Object ();</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">setName (obj2);</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">Alert (obj2.name); Haha</span></span><br><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">this looks much like passing is a reference, because the obj.name is changed, but in fact is not, actually is the value, because the <strong>value of OBJ2 itself is the address of the new object</strong> , so the address is passed IN. </span></span><p><p></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">This is Ali's 2014 written question:<em id="__mceDel" style="line-height: 1.5;"> </em></span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">var a = 1;</span></p></p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">var obj = {</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">B:2</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">};</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">var fn = function () {};</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">fn.c = 3;</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"> </span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">function Test (x, y, z) {</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">x = 4;</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">y.b = 5;</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">z.c = 6;</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">return z;</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">}</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">test (a, obj, fn);</span></span><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">Alert (a + obj.b + fn.c);</span></span><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">Answer: 12</span></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">First the test passed in the argument, A is the basic type (ah yes, copied a value of wow), obj is an object (point to address hula啦, you move me also move), FN is certainly not the basic type. When the test is executed, x is assigned a value of 4 (with a ok, each play, A is still 1), Y's B is assigned to 5, then the B of obj becomes 5,z C becomes 6, then the FN C of course will be 6. So the result of alert should be 1+5+6 =12. (in fact, test does not return Z as well, Z still changes).</span></p></p><p><p></p></p><p><p></p></p><p><p><span style="font-size: 15px; font-family: ‘Microsoft YaHei‘;">————————————</span></p></p><p><p><span style="font-family: ‘Microsoft YaHei‘;"><span style="font-size: 15px; line-height: 22.5px;">Reference: http://www.2cto.com/kf/201401/273413.html, 1190000002789651#articleheader0</span></span></p></p><p><p></p></p><p><p>Reference assignment and value assignment of JS</p></p></span>
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.
A Free Trial That Lets You Build Big!
Start building with 50+ products and up to 12 months usage for Elastic Compute Service