摘要:一前言中所有函數的參數都是按照值傳遞。二基本數據類型在向函數傳遞基本數據類型的時候,被傳遞的值會被復制給一個局部變量對象的一個元素。所以局部變量的變化會反映到函數外部。所以你修改了屬性會影響到函數外部。
一、前言
ECMA中所有函數的參數都是按照值傳遞。
二、基本數據類型在向函數傳遞基本數據類型的時候,被傳遞的值會被復制給一個局部變量(arguments對象的一個元素)。
function test( x ) { x = 10; //第一次賦值 console.log( "x1 : " + x ); console.log( "arguments1 : " + arguments ) console.log( "arguments[0]1 : " + arguments[0] ) arguments[0] = 100; console.log( "x2 : " + x ); console.log( "arguments2 : " + arguments ) console.log( "arguments[0]2 : " + arguments[0] ) }; test(5); function test( num ) { num = num + 10; return num; }; var num = 20; var result = test( num ); console.log( "num : " + num ); console.log( "result : " + result );三、引用數據類型
在向函數傳遞引用數據類型的時候,會把這個值的內存地址復制給一個局部變量。所以局部變量的變化會反映到函數外部。
function setName( obj ) { obj.name = "盧林"; }; var lou = new Object(); window.setName( lou ); console.log( lou.name ); function setName( obj ) { obj.name = "盧林"; //重新new obj = new Object(); obj.name = "others"; //其實已經不是傳入的內存地址 }; var lou = new Object(); window.setName( lou ); console.log( lou.name );
其實原理很簡單,引用類型傳入的是內存地址的值(當然JavaScript操作內存地址),比如是8bit,內存地址是:1100 1010,指向的內容是person對象。所以你修改了name屬性會影響到函數外部。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78200.html
摘要:關于的求值策略,問中函數的參數傳遞是按值傳遞還是按引用傳遞回答很經典。所以不能說中函數的參數傳遞嚴格按值傳遞或按引入傳遞。中還采用一種參數傳遞策略,叫按共享傳遞。中參數是必須先求值再作為實參傳入函數的。參考求值策略中函數參數的默認值 最近在研究 lambda 演算中的 η-變換 在 JavaScript 中的應用,偶然在 stackoverflow 上看到一個比較有意思的問題。關于 J...
摘要:深入系列第九篇,除了按值傳遞引用傳遞,還有第三種傳遞方式按共享傳遞定義在高級程序設計第三版,講到傳遞參數中所有函數的參數都是按值傳遞的。 JavaScript深入系列第九篇,除了按值傳遞、引用傳遞,還有第三種傳遞方式 —— 按共享傳遞 定義 在《JavaScript高級程序設計》第三版 4.1.3,講到傳遞參數: ECMAScript中所有函數的參數都是按值傳遞的。 什么是按值傳遞呢?...
摘要:它對數組和對象使用按值傳遞,但這是在的共享傳參或拷貝的引用中使用的按值傳參。例如在這里,變量和值在執(zhí)行期間存儲在堆棧中。返回值這是可選的,函數可以返回值,也可以不返回值。變量被推入堆棧,從而在執(zhí)行時成為的副本。 這是專門探索 JavaScript 及其所構建的組件的系列文章的第 22 篇。 想閱讀更多優(yōu)質文章請猛戳GitHub博客,一年百來篇優(yōu)質文章等著你! 如果你錯過了前面的章節(jié),可...
摘要:它對數組和對象使用按值傳遞,但這是在的共享傳參或拷貝的引用中使用的按值傳參。例如在這里,變量和值在執(zhí)行期間存儲在堆棧中。返回值這是可選的,函數可以返回值,也可以不返回值。變量被推入堆棧,從而在執(zhí)行時成為的副本。 這是專門探索 JavaScript 及其所構建的組件的系列文章的第 22 篇。 想閱讀更多優(yōu)質文章請猛戳GitHub博客,一年百來篇優(yōu)質文章等著你! 如果你錯過了前面的章節(jié),可...
摘要:中所有函數的參數都是按值傳遞的。基本類型本身是按值傳遞,具有不可變性,對基本類型的修改,實質上都是在棧內存中創(chuàng)建了新的值。中把這種拷貝也認為是按值傳遞。 本文共 1200 字,讀完只需 5 分鐘 概述 參數的傳遞分為按值傳遞和按引用傳遞,而 JavaScript 中參數的傳遞只有按值傳遞。 ECMAScript 中所有函數的參數都是按值傳遞的。 所謂按值傳遞就是: 把函數外部的值復制給...
摘要:講清楚之參數傳值參數傳值是指函數調用時,給函數傳遞配置或運行參數的行為,包括通過進行傳值。所以對的賦值會改變上下文棧中標識符保存的具體值此時如果使用的是按引用傳遞,則變量所指向的對象因該也被賦值為。 講清楚之 javascript 參數傳值 參數傳值是指函數調用時,給函數傳遞配置或運行參數的行為,包括通過call、apply 進行傳值。 在實際開發(fā)中,我們總結javascript參數傳...
閱讀 640·2021-10-13 09:39
閱讀 1449·2021-09-09 11:53
閱讀 2639·2019-08-29 13:55
閱讀 722·2019-08-28 18:08
閱讀 2586·2019-08-26 13:54
閱讀 2406·2019-08-26 11:44
閱讀 1835·2019-08-26 11:41
閱讀 3761·2019-08-26 10:15