摘要:對象值傳遞與引用傳遞數據類型與數據結構我們需要先回憶一下。值傳遞與引用傳遞通過上述的理解要明白中值傳遞與引用傳遞就太簡單了,下面的兩個超級簡單的可以詮釋一切。
title: JS對象(2)值傳遞與引用傳遞
date: 2016-10-05
tags: JavaScript
我們需要先回憶一下。
JavaScript 是一種弱類型或者說動態語言。這意味著你不用提前聲明變量的類型,在程序運行過程中,類型會被自動確定。
此外,最新的 ECMAScript 標準定義了7中數據類型:
6種 原始類型: Boolean, Null, Undefined, Number, Stirng, Symbol
一種復雜類型(引用類型)對象: Object.
0x02 值傳遞與引用傳遞JavaScript 一切皆對象(除了6中原始類型)
在 JS 中,所有除 Object 以為的類型都是不可變的。比如,JS 中字符串是不可變的,任何對字符串的操作一定返回了一個新字符串,原始字符串并沒有被改變。
通過上述的理解要明白 Javascript 中值傳遞與引用傳遞就太簡單了,下面的兩個超級簡單的 demo 可以詮釋一切。
// 值傳遞 var a = 2; function foo(b){ b +=10; } foo(a) console.log(a) // 2 // 原始 a 的值沒有發生改變
值傳遞:
只將值進行傳遞,與原變量無關,值會被復制一份,保存在內存中另一個不同的位置。
當我們修改傳遞后的值時,修改的是內存中新的位置,而原變量不會被影響,還是原來的值。
這種情況往往出現在6中原始類型中。
//引用傳遞 var a = [2]; function foo(b){ b.push(10) } foo(a) console.log(a) // [2, 10] // 原始 a 的值被改變了
引用傳遞:
將內存地址進行傳遞,相當于把原變量完整的傳遞過來。
當我們修改傳遞后的值時,修改的是內存中原來的位置,會對原變量造成影響。
這種情況往往出現在對象上。
利用引用傳遞的特性,我們有了實現面向對象的基礎
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/86517.html
摘要:按引用傳遞時,函數的形參接收實參的隱式引用,而不再是副本。探究值的傳遞方式的基本類型,是按值傳遞的。但這樣是否說明的對象是按引用傳遞的呢我們再看下面的例子仍然是并未被修改為如果是按引用傳遞,修改形參的值,應該影響到實參才對。 最近遇到個有趣的問題:JS中的值是按值傳遞,還是按引用傳遞呢? 在分析這個問題之前,我們需了解什么是按值傳遞(call by value),什么是按引用傳遞(ca...
摘要:基本類型和引用類型用操作符定義的變量將成為作用域中的局部變量。在向參數傳遞基本類型的值時,被傳遞的值會被復制給一個局部變量即命名參數。結果依舊是在調用函數初時,與引用的是同一對象,所以首次的屬性賦值會對有所影響。 函數 參數 1.js函數不介意傳遞進來多少個參數,也不在乎傳遞進來參數是什么類型。2.arguments對象:類數組 arguments對象的長度是由傳入的參數個數決定的,...
摘要:基本類型和引用類型用操作符定義的變量將成為作用域中的局部變量。在向參數傳遞基本類型的值時,被傳遞的值會被復制給一個局部變量即命名參數。結果依舊是在調用函數初時,與引用的是同一對象,所以首次的屬性賦值會對有所影響。 函數 參數 1.js函數不介意傳遞進來多少個參數,也不在乎傳遞進來參數是什么類型。2.arguments對象:類數組 arguments對象的長度是由傳入的參數個數決定的,...
摘要:它對數組和對象使用按值傳遞,但這是在的共享傳參或拷貝的引用中使用的按值傳參。例如在這里,變量和值在執行期間存儲在堆棧中。返回值這是可選的,函數可以返回值,也可以不返回值。變量被推入堆棧,從而在執行時成為的副本。 這是專門探索 JavaScript 及其所構建的組件的系列文章的第 22 篇。 想閱讀更多優質文章請猛戳GitHub博客,一年百來篇優質文章等著你! 如果你錯過了前面的章節,可...
摘要:它對數組和對象使用按值傳遞,但這是在的共享傳參或拷貝的引用中使用的按值傳參。例如在這里,變量和值在執行期間存儲在堆棧中。返回值這是可選的,函數可以返回值,也可以不返回值。變量被推入堆棧,從而在執行時成為的副本。 這是專門探索 JavaScript 及其所構建的組件的系列文章的第 22 篇。 想閱讀更多優質文章請猛戳GitHub博客,一年百來篇優質文章等著你! 如果你錯過了前面的章節,可...
閱讀 1643·2021-09-22 15:21
閱讀 2861·2021-09-09 09:32
閱讀 2681·2021-09-02 09:52
閱讀 3303·2019-08-30 14:02
閱讀 2218·2019-08-26 13:25
閱讀 1447·2019-08-26 13:24
閱讀 1599·2019-08-26 10:31
閱讀 1553·2019-08-26 10:16