对于上下文,我正在查看npm包unique-random
。这只是八行代码,因此,它是完整的:
'use strict';
module.exports = function (min, max) {
var prev;
return function rand() {
var num = Math.floor(Math.random() * (max - min + 1) + min);
return prev = num === prev && min !== max ? rand() : num;
};
};
我了解大多数情况,但我不确定最终的return语句在做什么。
有人可以尽可能明确地解释它(我真的对JavaScript和编码是陌生的)。
我想这可能是关于
return
语句(也似乎是赋值)中正在发生什么的一个普遍问题?那正确吗?
因此,有一个条件运算符。这就是说,如果
?
左侧的内容为真,则:
左侧的内容为真,否则:
右侧的内容为真。那么,如果num === prev
和min !== max
,将rand()
分配给prev
,否则将num
分配给prev
?那正确吗?
最佳答案
基本上,此模块返回一个函数:
module.exports = function () {
return function rand() {
// stuff
};
};
因此,当您导入此模块时,必须调用得到的内容:
var rand = import('./rand');
rand(); // stuff
然后,rand函数包含两个部分:
var num = Math.floor(Math.random() * (max - min + 1) + min);
计算介于最小值和最大值之间的随机值。
return prev = num === prev && min !== max ? rand() : num;
确保新编号与上一个不同,并将新值保存在prev中,您可以看到如下所示:
if ( num === prev && min !== max ){
prev = rand();
} else {
prev = num;
}
return prev;
我将添加
prev
变量在模块闭包中,因此可以在rand
范围内访问它,因此对rand
的每次调用都将具有新的prev
值。(严格说来不是相同的代码,但是它应该做同样的事情)
关于javascript - 解释这个“return”语句?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36797962/