【Javascript】javascript 中的指針

C/C++語音中指針讓很多人望而卻步,Java中沒有指針讓很多人趨之若鶩。

  那麼深受編程小白喜歡的javascript好像也沒有指針啊?博主自己在學習的過程中,確實沒有見到有哪塊知識明確地指出 javascript 的指針是什麼,沒有變量類型專門表示指針這種類型。
  其實在不同的語言內部,應該都是包含指針的。但是考慮到受衆的接受能力,將指針包裝隱藏起來了。在 Javascript 中與指針相關的主要是引用。換句話說,就是 b={x:"x",y:"y"}; a = b 其中,可以通過 a 進行操作,實現對 b 的操作。如,a.x = "1" ; console.log(b.x); 顯示的結果是是 1
  相信上面這個問題大家接觸的比較多一些。但是很多時候也只是當作一個引用特性去考慮 ,並沒有深入思考過。下面,通過一個問題來引入 javascript 的指針概念:

 有一個函數,遞歸計算,將符合條件的次數累加起來,並最終返回。

  正常的思路,可能是建立一個全局變量,綁定以window 或者 global 對象上。對該變量進行累加。

function Re(n){
    window.count ? null : window.count = 1;
    if( n <100){
        if(n%2)window.count++;
        return Re(n+1)+3;
    }else{
        return 1;
    }
}

  固然這樣是可以做到的,但是如果將計數作爲一個參數,放入 Re() 函數中呢?需要將指定的參數作爲記數參數時怎麼辦。切記,此時的傳參爲值傳參,怎麼修改爲指針傳參?
  這個時候,可以利用 javascript 的引用特性,和數組的特性:

function Re(array , n){
    if(n<100){
        if(n%2)array[0]++;
        return Re(n+1)+3;
    }else{
        return 1;
    }
}

使用數組作爲參數,實際中只對 [0] 元素進行調用,保證了值傳遞的同時,可以修改值。達到了類似於C語言中的指針作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章