成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

JS對(duì)象(2)值傳遞與引用傳遞

Jacendfeng / 2477人閱讀

摘要:對(duì)象值傳遞與引用傳遞數(shù)據(jù)類型與數(shù)據(jù)結(jié)構(gòu)我們需要先回憶一下。值傳遞與引用傳遞通過上述的理解要明白中值傳遞與引用傳遞就太簡(jiǎn)單了,下面的兩個(gè)超級(jí)簡(jiǎn)單的可以詮釋一切。

title: JS對(duì)象(2)值傳遞與引用傳遞
date: 2016-10-05
tags: JavaScript

0x00 數(shù)據(jù)類型與數(shù)據(jù)結(jié)構(gòu)

我們需要先回憶一下。

JavaScript 是一種弱類型或者說動(dòng)態(tài)語言。這意味著你不用提前聲明變量的類型,在程序運(yùn)行過程中,類型會(huì)被自動(dòng)確定。

此外,最新的 ECMAScript 標(biāo)準(zhǔn)定義了7中數(shù)據(jù)類型:

6種 原始類型: Boolean, Null, Undefined, Number, Stirng, Symbol

一種復(fù)雜類型(引用類型)對(duì)象: Object.

JavaScript 一切皆對(duì)象(除了6中原始類型)

在 JS 中,所有除 Object 以為的類型都是不可變的。比如,JS 中字符串是不可變的,任何對(duì)字符串的操作一定返回了一個(gè)新字符串,原始字符串并沒有被改變。

0x02 值傳遞與引用傳遞

通過上述的理解要明白 Javascript 中值傳遞與引用傳遞就太簡(jiǎn)單了,下面的兩個(gè)超級(jí)簡(jiǎn)單的 demo 可以詮釋一切。

// 值傳遞
var a = 2;
function foo(b){
    b +=10;        
}
foo(a)
console.log(a) 
//  2
// 原始 a 的值沒有發(fā)生改變

值傳遞:

只將值進(jìn)行傳遞,與原變量無關(guān),值會(huì)被復(fù)制一份,保存在內(nèi)存中另一個(gè)不同的位置。

當(dāng)我們修改傳遞后的值時(shí),修改的是內(nèi)存中新的位置,而原變量不會(huì)被影響,還是原來的值。

這種情況往往出現(xiàn)在6中原始類型中。

//引用傳遞
var a = [2];
function foo(b){
    b.push(10)    
}
foo(a)
console.log(a) 
//  [2, 10]
// 原始 a 的值被改變了

引用傳遞:

將內(nèi)存地址進(jìn)行傳遞,相當(dāng)于把原變量完整的傳遞過來。

當(dāng)我們修改傳遞后的值時(shí),修改的是內(nèi)存中原來的位置,會(huì)對(duì)原變量造成影響。

這種情況往往出現(xiàn)在對(duì)象上。

利用引用傳遞的特性,我們有了實(shí)現(xiàn)面向?qū)ο蟮幕A(chǔ)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/86517.html

相關(guān)文章

  • JS中的是按傳遞,還是按引用傳遞呢?

    摘要:按引用傳遞時(shí),函數(shù)的形參接收實(shí)參的隱式引用,而不再是副本。探究值的傳遞方式的基本類型,是按值傳遞的。但這樣是否說明的對(duì)象是按引用傳遞的呢我們?cè)倏聪旅娴睦尤匀皇遣⑽幢恍薷臑槿绻前匆脗鬟f,修改形參的值,應(yīng)該影響到實(shí)參才對(duì)。 最近遇到個(gè)有趣的問題:JS中的值是按值傳遞,還是按引用傳遞呢? 在分析這個(gè)問題之前,我們需了解什么是按值傳遞(call by value),什么是按引用傳遞(ca...

    Jochen 評(píng)論0 收藏0
  • js 函數(shù)、參數(shù)傳遞、引用類型基本類型

    摘要:基本類型和引用類型用操作符定義的變量將成為作用域中的局部變量。在向參數(shù)傳遞基本類型的值時(shí),被傳遞的值會(huì)被復(fù)制給一個(gè)局部變量即命名參數(shù)。結(jié)果依舊是在調(diào)用函數(shù)初時(shí),與引用的是同一對(duì)象,所以首次的屬性賦值會(huì)對(duì)有所影響。 函數(shù) 參數(shù) 1.js函數(shù)不介意傳遞進(jìn)來多少個(gè)參數(shù),也不在乎傳遞進(jìn)來參數(shù)是什么類型。2.arguments對(duì)象:類數(shù)組 arguments對(duì)象的長(zhǎng)度是由傳入的參數(shù)個(gè)數(shù)決定的,...

    Lavender 評(píng)論0 收藏0
  • js 函數(shù)、參數(shù)傳遞、引用類型基本類型

    摘要:基本類型和引用類型用操作符定義的變量將成為作用域中的局部變量。在向參數(shù)傳遞基本類型的值時(shí),被傳遞的值會(huì)被復(fù)制給一個(gè)局部變量即命名參數(shù)。結(jié)果依舊是在調(diào)用函數(shù)初時(shí),與引用的是同一對(duì)象,所以首次的屬性賦值會(huì)對(duì)有所影響。 函數(shù) 參數(shù) 1.js函數(shù)不介意傳遞進(jìn)來多少個(gè)參數(shù),也不在乎傳遞進(jìn)來參數(shù)是什么類型。2.arguments對(duì)象:類數(shù)組 arguments對(duì)象的長(zhǎng)度是由傳入的參數(shù)個(gè)數(shù)決定的,...

    Bowman_han 評(píng)論0 收藏0
  • JavaScript 是如何工作的:JavaScript 的共享傳遞和按傳遞

    摘要:它對(duì)數(shù)組和對(duì)象使用按值傳遞,但這是在的共享傳參或拷貝的引用中使用的按值傳參。例如在這里,變量和值在執(zhí)行期間存儲(chǔ)在堆棧中。返回值這是可選的,函數(shù)可以返回值,也可以不返回值。變量被推入堆棧,從而在執(zhí)行時(shí)成為的副本。 這是專門探索 JavaScript 及其所構(gòu)建的組件的系列文章的第 22 篇。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 如果你錯(cuò)過了前面的章節(jié),可...

    keithyau 評(píng)論0 收藏0
  • JavaScript 是如何工作的:JavaScript 的共享傳遞和按傳遞

    摘要:它對(duì)數(shù)組和對(duì)象使用按值傳遞,但這是在的共享傳參或拷貝的引用中使用的按值傳參。例如在這里,變量和值在執(zhí)行期間存儲(chǔ)在堆棧中。返回值這是可選的,函數(shù)可以返回值,也可以不返回值。變量被推入堆棧,從而在執(zhí)行時(shí)成為的副本。 這是專門探索 JavaScript 及其所構(gòu)建的組件的系列文章的第 22 篇。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 如果你錯(cuò)過了前面的章節(jié),可...

    陳偉 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<