我一直在javascript中使用return语句。这是msdn definitionreturn语句是从内部工作到外部工作的吗?
下面是我写的一个二进制数转换为十进制数的函数:
function bin2dec(num){
**return** num.toString().split('').reverse().reduce(function(preVal, currentVal , iterator){
**return** (currentVal === '1') ? preVal + Math.pow(2, iterator) : preVal;
}, 0);
}
让我们用5二进制作为一个例子与Binary5 = 101
所以工作我认为,无论何时使用return语句,它都会过早地退出当前函数。
这里我有两个返回语句,一个在回调函数中。
第一个return语句是在第二行:
return num.toString().split('').reverse() // and then the reduce function w/ a call back.
我相信这个“return”语句正在等待减少函数的返回
该函数的数量,使得一个字符串,然后分割,然后反转,然后reduce方法遍历数组。当reduce函数完成时,它返回一个值,然后返回第一个返回值。这里是关于reduce函数返回值的更多细节。
在回调:
// 101
.reduce(function(preVal, currentVal , iterator){
return (currentVal === '1') ? preVal + Math.pow(2, iterator) : preVal;
}, 0);
它的阵列中的每个部分遍历,在这种情况下,“返回”是普雷瓦尔除非 currentVal === 1.“返回”值被传递给回调并且是preVal的值。对于每个循环,我们将添加并建立在来自pre val的当前val上。当数组中的每个项目都迭代时,return语句就是最终的值。最终的值然后从尚未执行的第一个return语句返回。
我真的迷失在回报声明有时。我主要试图检查我的逻辑在'返回'陈述如何以我描述的方式行事。对于一个快速回顾
首先返回 - 等待一切进行评价,有一个 对象返回。
第二回 - 用于回调,当它完成 迭代,则返回最后一个返回值,则该值是 从最终爆发的功能 第一return语句采取行动。
感谢您的提示。我试图按照自己的方式清楚地了解它的实施情况。我在第一次尝试时实际上已经有了你的当前代码,但是想尝试将它凝聚成一个函数。当插入返回语句以使我的当前版本正常工作时,我有点猜测。我想我的逻辑关于如何两个返回语句正常工作是正确的,但我只是想检查我正确思考。 – HelloWorld
@HelloWorld:你的代码和你的理解都很好。像你一样使用匿名函数是可以的;只要你保持内部函数小,它不应该伤害可读性。 –