如何停止在 Javascript 中返回 -0?

How do I stop returning -0 in Javascript?

我用一个带有 onclick 代码的按钮创建了一个事件侦听器,但有时当我一遍又一遍地单击该按钮时,它 return 未定义我将它设置为 return 来自数组。 无论如何,我发现自从我把 array.length -1 放在控制台后,它有时会 returns -0 或 undefined 而不是 0。解决此问题的最佳方法是什么?

这是我的代码,按钮侦听器位于 main.js 文件中:

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Document</title>
</head>
<body>
    <div class="root">
        <div>
            <button id="btn1">sleep</button>
        </div>
    </div>

    <script type="module" src="main.js"></script>
</body>
</html>

main.js

import { v1, v2, v3 ,v4 } from './main2.js';


let btn = document.getElementById('btn1');

console.log(v3);
/////////////////////////////////////////////////



btn.addEventListener('click', () => {
    console.log(`${v4[Math.round(Math.random() * v4.length -1
      )]}`)
})

main2.js


let log = {
    One: 'one',
    Two: 'two',
    Three: 'three',
    Four: ['tester1', 'tester2', 'tester3'],
}

export let {One: v1, Two: v2, Three: v3, Four: v4} = log;

console.log(`${v4[Math.round(Math.random() * v4.length -1)]}`);

正在选择 -1 和 3 之间的数字

应该是这个

console.log(`${v4[Math.random() * v4.length | 0]}`);

它选择了 0 到 3 之间的数字。Math.random() return 是 0 到 0.999999999999999999 之间的数字,所以 Math.random() * v4.length 将 return 是 0 到 3.99999999999999999999 之间的数字

然后| 0将结果转为整数

| 0Math.floor 更快,也更惯用。参见 Using bitwise OR 0 to floor a number