我可以在 javascript 中使用 c 中的 & 符号来处理参数吗? [复制]

Posted

技术标签:

【中文标题】我可以在 javascript 中使用 c 中的 & 符号来处理参数吗? [复制]【英文标题】:Is there somthing like an ampersand in c that I can use in javascript to function parameters? [duplicate] 【发布时间】:2012-06-21 12:00:28 【问题描述】:

可能重复:Pass Variables by Reference in javascript

我拼命寻找解决方案。我有一个 javascript 项目要完成,唯一阻碍我的是这个小东西。我只需要 c 中的和符号之类的东西放在函数参数旁边,这样它就可以通过引用传递,它会在函数之外发生变化。

现在我知道还有其他方法。但就我而言,这是唯一能帮助我的事情。 这是一个创建二叉搜索树的程序,我最初是用 c++ 制作的,但我需要将它转换为 javascript,因为我将展示代码执行时树是如何生成的。这是我的项目。所以要创建二进制结构,只有像&符号这样的东西会对我有所帮助。

function nod()

    var info;
    var left;
    var right;


var rad;
rad = new nod();
rad = null;

function create(rad,x) // create(nod *&rad, int x) in c++

    if(rad==null)
    
        rad = new nod();
        rad.info = x ;
        rad.left = rad.right = null;
    
    else
    
        if(x < rad.info)
        
            create(rad.left,x);
        
        else
         
            create(rad.right,x);
        
    


function read(rad) // read(nod *&rad) in c++

    var input = [
                    0,
                    10,
                    2,
                    1,
                    8,
                    9,
                    4,
                    5,
                    3,
                    6,
                    20,
                    11,
                    30,
                    21,
                    31,
                    22,
                    23,
                ];
    var i;
    for(i=1;i<=16;i++)
    
        create(rad,input[i]);
    


read(rad);

【问题讨论】:

你永远不会说通过地址传递会解决什么问题。请更详尽地描述您的问题 哦,对不起..我的问题是..我需要那个递归结构,因为我需要能够从 rad 开始并在开始时获得像 rad 这样的所有节点是 10.. rad.left是 1 rad.left.right 是 2 rad.right 是 20...我需要以这种方式访问​​它..它是我的项目必须的....我需要它是这样的,因为我正在制作将在左侧和右侧显示 c++ 代码的网页我将在代码执行时生成二叉树。通过单击按钮,它将执行一行代码……我需要它几乎与 c 代码相同,因此问题最少 【参考方案1】:

在 javascript 中,对象是通过引用传递的。因此,请尝试将您的值作为对象传递。 提示:尝试像这样传递它 value:your_value

【讨论】:

否决票,字符串和其他原始类型不通过引用传递。正如你所说,对象是 好的,谢谢,补充。我以为他们是通过参考通过***.com/questions/1308624/… Nothing 在 JavaScript 中通过引用传递。阅读已接受的重复问题的答案。 这里的混淆源于传递的是引用的事实,但是如果您在函数内部重新分配变量(而不是修改其内容),则引用不再存在。所以,一个引用被传递了,但它没有被返回,可以这么说。只要您不重新分配作为参数传递的变量,它就会在“按引用传递”模型中按预期运行。【参考方案2】:

没有经过测试,但如果你不急需递归,你可以使用这个:

function create(rad, x) // create(nod *&rad, int x) in c++

  var result = new nod();
  result.info = x;
  result.left = result.right = null;

  while (true) 
    if (x < rad.info) 
      if (rad.left) 
        rad = rad.left;
        continue;
      
      rad.left = result;
      break;
     else
      if (rad.right) 
        rad = rad.right;
        continue;
      
      rad.right = result;
      break;
    
  

【讨论】:

以上是关于我可以在 javascript 中使用 c 中的 & 符号来处理参数吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Javascript中的C解析器

Javascript和目标c

为啥C没有像javascript中的setTimeout这样的非阻塞睡眠功能

Javascript、Razor/MVC3 中的 C# if 语句

来自 C 代码的异步 javascript 库调用完成得太晚

JavaScript/HTML 中的待办事项列表