成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

筆記:js參數(shù)傳遞問題

Kross / 456人閱讀

摘要:正題中所有函數(shù)的參數(shù)都是按值傳遞的。訪問變量有按值和按引用兩種方式,而參數(shù)只能按值傳遞?;绢愋蛥?shù)傳遞傳給函數(shù)的是數(shù)值的一個(gè)復(fù)制,函數(shù)中對(duì)其的修改外部不可見。因?yàn)橛眯乱酶采w在外部不可見,因?yàn)楹瘮?shù)只是拿到了引用并沒有權(quán)力更改引用。

前言
var a = [1],b=[1];
a==b;     //fasle
var c = b;
c[0]=2;
b         //[2]
c = [3];
b         //[2]

解釋:b對(duì)c說,我同意你跟我共用一個(gè)內(nèi)存地址,你可以在我的內(nèi)存地址內(nèi),修改局部成員,但是你要連我的家都給挪走,對(duì)不起 你自己走。。。

正題

ECMAScript 中所有函數(shù)的參數(shù)都是按值傳遞的。訪問變量有按值和按引用兩種方式,而參數(shù)只能按值傳遞。
??

基本類型參數(shù)傳遞:傳給函數(shù)的是數(shù)值的一個(gè)復(fù)制,函數(shù)中對(duì)其的修改外部不可見。

var a = 1;
var b = 2;
function change(a, b) {
    var c = a;
    a = b;
    b = c;
    console.log(a);    //2
    console.log(b);    //1
}
change(a, b);
console.log(a);    //1
console.log(b);    //2

引用類型參數(shù)傳遞:傳給函數(shù)的是數(shù)值的一個(gè)引用,函數(shù)中對(duì)其屬性的修改外部可見,但用新引用覆蓋其則在外部不可見

var a = [1, 2, 3];
var b = [5, 6];
function change(a,b) {
  a[0] = 4;    //對(duì)其屬性的修改外部可見 
  var c = a;
  a = b;      //用新引用覆蓋
  b = c;
  console.log(a);  //"5,6"        
  console.log(b);  //"4,2,3"
}
change(a,b);
console.log(a);    //"4,2,3"
console.log(b);    //"5,6"

??a,b是change函數(shù)中的變量,在調(diào)用函數(shù)時(shí)傳遞了a,b的引用賦給了這兩個(gè)變量,但是并不能改變?nèi)种械腶,b。因?yàn)橛眯乱酶采w在外部不可見,因?yàn)楹瘮?shù)只是拿到了引用 并沒有權(quán)力更改引用。

var a = [1, 2, 3];
var b = [5, 6];
function change() {
  var c = a;
  a[0] = 4;    //對(duì)其屬性的修改外部可見 
  a = b;      //用新引用覆蓋
  b = c;
}
change(a,b);
console.log(a);  //"5,6" 
console.log(b);  //"4,2,3"

??因?yàn)閖s沒有塊級(jí)作用域,所以它在change里找不到變量a,b就會(huì)自覺的到上層去找,所以這里的a,b是全局變量的引用。
歡迎搜索微信公眾號(hào):一線碼農(nóng)
或掃碼關(guān)注:

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/97349.html

相關(guān)文章

  • JavaScript異步編程解決方案筆記

    摘要:異步編程解決方案筆記最近讀了樸靈老師的深入淺出中異步編程一章,并參考了一些有趣的文章。另外回調(diào)函數(shù)中的也失去了意義,這會(huì)使我們的程序必須依賴于副作用。 JavaScript 異步編程解決方案筆記 最近讀了樸靈老師的《深入淺出NodeJS》中《異步編程》一章,并參考了一些有趣的文章。在此做個(gè)筆記,記錄并鞏固學(xué)到的知識(shí)。 JavaScript異步編程的兩個(gè)核心難點(diǎn) 異步I/O、事件驅(qū)動(dòng)使得...

    dmlllll 評(píng)論0 收藏0
  • JavaScript框架學(xué)習(xí)筆記(一)

    摘要:基本的學(xué)習(xí)思路是跟著框架設(shè)計(jì)這本書,甚至可以說是這本書的讀書筆記。也參考很多網(wǎng)上解讀的博客和學(xué)習(xí)資料。當(dāng)然,最重要的資料還是框架的源代碼。后來由于開發(fā)者反對(duì),新興的框架都在命名空間上構(gòu)建。 JavaScript框架學(xué)習(xí)筆記(一) 我為什么要學(xué)習(xí)框架 更深入的理解工具,以后用起來更順手而且也能做一定的工具取舍,學(xué)習(xí)理解新工具也就更快, 對(duì)提升js水平也很有幫助,框架有很多解決坑的經(jīng)典思...

    Shonim 評(píng)論0 收藏0
  • React學(xué)習(xí)筆記2:React官方CommentBox實(shí)踐

    摘要:瀏覽器看效果效果顯示效果就是瞎比比我不聽瞎比比解析后的文本直接被顯示在頁面上,并沒有被瀏覽器解析,這是為了防止被攻擊而作的保護(hù)措施。 新搭建的個(gè)人博客,本文地址:React學(xué)習(xí)筆記2:React官方CommentBox實(shí)踐所有的操作是繼續(xù)上一個(gè)學(xué)習(xí)筆記,參考的是React官方的CommentBox,不過不是100%按照其實(shí)現(xiàn)。參考:https://facebook.github.io/...

    VPointer 評(píng)論0 收藏0
  • [JavaScript 學(xué)習(xí)筆記] 2. 繼承

    摘要:第二個(gè)問題是在創(chuàng)建子類型的實(shí)例時(shí),不能向超類型的構(gòu)造函數(shù)中傳遞參數(shù)。實(shí)際上,應(yīng)該說是沒有辦法在不影響所有對(duì)象實(shí)例的情況下,給炒類型的構(gòu)造函數(shù)傳遞參數(shù)。借用構(gòu)造函數(shù)偽造對(duì)象或經(jīng)典繼承即在子類型構(gòu)造函數(shù)的內(nèi)部調(diào)用超類型構(gòu)造函數(shù)。 繼承 許多 OO 語言支持兩種繼承方式:接口繼承和實(shí)現(xiàn)繼承。接口繼承只繼承方法簽名,而實(shí)現(xiàn)繼承則繼承實(shí)際的方法。如前所述,由于函數(shù)沒有簽名,在 ECMAScri...

    leeon 評(píng)論0 收藏0

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<