【Javascript】javascript 中的指针

来源:互联网 发布:数据库营销培训课程 编辑:程序博客网 时间:2024/06/08 17:22

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语言中的指针作用。