如何停止在 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
将结果转为整数
| 0
比 Math.floor
更快,也更惯用。参见 Using bitwise OR 0 to floor a number
我用一个带有 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
将结果转为整数
| 0
比 Math.floor
更快,也更惯用。参见 Using bitwise OR 0 to floor a number