使用 parseInt() 将用户的 promt() 更改为数字的更好方法
Better way to use parseInt() to change users' promt() into numbers
我设置了一个函数来询问用户一系列的数字,然后给他们一个随机数。第一次尝试还可以。
// function settings
function getRandom(lower, upper) {
return Math.floor(Math.random()*(upper-lower+1))+lower;
}
// ask users to give a range of numbers
var lowerNum = parseInt(prompt("lower number?"));
var upperNum = parseInt(prompt("upper number?"));
document.write(getRandom(lowerNum, upperNum));
不过我觉得把parseInt()
放在函数里面会更好,这样会更清晰语义化。
// function settings
function getRandom(lower, upper) {
lower = parseInt(lower);
upper = parseInt(upper);
return Math.floor(Math.random()*(upper-lower+1))+lower;
}
// ask users to give a range of numbers
var lowerNum = prompt("lower number?");
var upperNum = prompt("upper number?");
document.write(getRandom(lowerNum, upperNum));
两个代码块都可以很好地得到相同的结果。但哪个是更好的实践,甚至是 运行 程序时的表现?
我先声明我无法确定这个答案的正确性,它只是基于观察的意见。我相信性能可以忽略不计,但是将一个 int 传递给一个函数比传递一个字符串然后将其解析为一个 int 稍微快一点。我用来证明这一点的逻辑是字符串是比 int 更复杂的数据类型。
我会说第一个...不是因为 parseInt,而是因为变量查找...在第二个函数中,您对在全局范围内声明和初始化的变量进行额外查找。
使用对你来说更易读的任何东西,但如果你想挤压额外的性能,请尝试在其他地方清理,比如删除这两个临时变量,使用按位地板等......(看起来很难看, 是):
function getRandom(lower, upper) {
return (Math.random()*(upper-lower+1) | 0) + lower;
}
alert(getRandom(parseInt(prompt("lower number?"), 10), parseInt(prompt("upper number?"), 10)));
Performance tests
你会发现你的两个案例通常彼此接近,我的方法稍微快一些,当你不解析整数时你会加速。
我设置了一个函数来询问用户一系列的数字,然后给他们一个随机数。第一次尝试还可以。
// function settings
function getRandom(lower, upper) {
return Math.floor(Math.random()*(upper-lower+1))+lower;
}
// ask users to give a range of numbers
var lowerNum = parseInt(prompt("lower number?"));
var upperNum = parseInt(prompt("upper number?"));
document.write(getRandom(lowerNum, upperNum));
不过我觉得把
parseInt()
放在函数里面会更好,这样会更清晰语义化。
// function settings
function getRandom(lower, upper) {
lower = parseInt(lower);
upper = parseInt(upper);
return Math.floor(Math.random()*(upper-lower+1))+lower;
}
// ask users to give a range of numbers
var lowerNum = prompt("lower number?");
var upperNum = prompt("upper number?");
document.write(getRandom(lowerNum, upperNum));
两个代码块都可以很好地得到相同的结果。但哪个是更好的实践,甚至是 运行 程序时的表现?
我先声明我无法确定这个答案的正确性,它只是基于观察的意见。我相信性能可以忽略不计,但是将一个 int 传递给一个函数比传递一个字符串然后将其解析为一个 int 稍微快一点。我用来证明这一点的逻辑是字符串是比 int 更复杂的数据类型。
我会说第一个...不是因为 parseInt,而是因为变量查找...在第二个函数中,您对在全局范围内声明和初始化的变量进行额外查找。
使用对你来说更易读的任何东西,但如果你想挤压额外的性能,请尝试在其他地方清理,比如删除这两个临时变量,使用按位地板等......(看起来很难看, 是):
function getRandom(lower, upper) {
return (Math.random()*(upper-lower+1) | 0) + lower;
}
alert(getRandom(parseInt(prompt("lower number?"), 10), parseInt(prompt("upper number?"), 10)));
Performance tests
你会发现你的两个案例通常彼此接近,我的方法稍微快一些,当你不解析整数时你会加速。