javascript - 如何将此函数从 as3 转换为 javascript

标签 javascript actionscript-3

我对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 中它会是什么样子?目前不起作用的具体原因是什么?

最佳答案

如果您去掉所有类型数据,它应该可以在 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 运行:

  1. JavaScript 是一种松散类型语言,因此不允许在函数参数上声明类型。为了避免出现意外的错误,您可以测试每个参数并抛出一个错误,它不是您需要的类型。
  2. JavaScript 不允许提供默认参数,但允许省略函数参数。这与 ActionScript 不同,在 ActionScript 中,不提供没有默认值的参数将引发错误。处理此问题的方法是测试参数是否未定义,并在需要时设置值。

上面我对 NaN 的额外测试是一个额外的预防层,不是必需的,但它同样可以用于所有参数,以使代码更加健壮。

关于javascript - 如何将此函数从 as3 转换为 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6973926/

相关文章:

javascript - flash.system.Capability.screenResolutionY 和 flash.system.Capability.screenResolutionX 的报告值是否不正确?

actionscript-3 - 将帧同步到音频和 channel.position 精度

javascript - 在python服务器上执行程序并在html网页上动态更新结果

javascript - 如何使用 Modernizr 测试是否支持关键帧?

javascript - 使用变量发出警报

javascript - JavaScript 与 Flash 之间的通信

Javascript 和 Actionscript 3 [设置变量问题]

javascript - 使用 AJAX 提交表单并将数据以 JSON 形式发送到文件

javascript - 以两个为增量解构数组

flash - Actionscript 3 中的相对 URL