我对javascript有点新意,所以我不知道如何将这个在actionscript3中编写的函数重写为js:
function map(v:Number, a:Number, b:Number, x:Number = 0, y:Number = 1):Number {
return (v == a) ? x : (v - a) * (y - x) / (b - a) + x;
}
在javascript中会是什么样子?究竟是什么原因导致现在无法正常工作?
答案 0 :(得分:5)
如果你拿走所有的类型数据,它应该在JS中工作,但你需要检查那些默认参数值,因为不支持默认参数。
function map(v, a, b, x, y) {
if(x == undefined || isNaN(x)) x = 0;
if(y == undefined || isNaN(y)) y = 1;
return (v == a) ? x : (v - a) * (y - x) / (b - a) + x;
}
要专门回答问题的最后部分,有两个问题阻止您的代码以JavaScript身份运行:
我在上面对NaN的额外测试是一个额外的预防层而不是必需的,但它同样可以用于所有参数,以使代码更健壮。
答案 1 :(得分:2)
Javascript没有编译时类型。删除所有:Number
,你应该没事。
(糟糕,错过了默认参数值,如其他答案中所述)
答案 2 :(得分:0)
function map(v,a,b,x,y){
if(x===undefined)x=0;
if(y===undefined)y=1;
return (v==a)?x:(v-a)*(y-x)/(b-a)+x;
}