首页 文章

Javascript fisher-yates协助

提问于
浏览
1

我是一般的编码新手,现在已经使用javascript工作了一段时间 - 提前道歉我可能在发布这个问题时遇到的任何错误 . 我研究了2个小时的大部分时间,并且无法自己拿出答案,所以我在这里开了账 .

我遇到了this回答/代码,我正在努力理解代码的某些方面 . 我在我的代码中使它工作,但我想围绕我不太了解的具体方面 .

具体来说,我不明白1)变量在分配3个定义时是如何工作的,每个定义后跟一个逗号 - 变量是指变量?一旦所有分配都由脚本结束定义,它如何知道接下来要使用哪个?

2)我需要澄清“开关”部分及其工作原理 . 如何根据最后一个连续定义每个,鼓励代码切换?

非常感谢你提前 .

1 回答

  • 1

    这只是声明三个变量名,但只分配 currentIndex . temporaryValuerandomIndex 此时未定义,稍后将使用:

    var currentIndex = array.length, temporaryValue, randomIndex;
    

    这与:

    var currentIndex = array.length;
    var temporaryValue;
    var randomIndex;
    

    交换变量的困难之一(在JS具有良好的解包/解构之前)是你不能一步完成它 .

    例如,如果您有:

    let a = "foo";
    let b = "bar";
    

    你想交换他们 . 一旦你说 a = b ,你就不再知道 a 之前的值是什么,因为你只是覆盖了它 . 解决方案是使用temp变量来保存旧的 a

    let a = "foo";
    let b = "bar";
    
    // swap
    let temp = a // remember old a value
    a = b        // replace a
    b = temp     // replace b with the original a
    

    这些天你可以简单地使用:

    let a = "foo";
    let b = "bar";
    
    [a, b] = [b, a]; //Swap in one step
    
    console.log(a, b)
    

相关问题