1. 基本概念
Math.asin()方法用于求一个数的反正弦值。它的语法形式如下所示:
Math.asin(x);
其中参数x应该是一个数字,即它的类型应该是Number。如果x不是Number类型的,那么它会先被强制类型转换为Number类型。
参数x代表的是某个角的正弦值,而Math.asin()方法返回的正是用弧度值表示的这个角。x应该处于 [-1, 1] 范围内,因为正弦值的取值范围是 [-1, 1]。
Math.asin()方法的返回值由下面的规则决定,规则中x的值指的是x被转换为Number类型后的值,如果它原本不是Number类型的话。
1. 如果x是NaN,那么结果是NaN;
2. 如果x大于1(包括正无穷Infinity),那么结果是NaN;
3. 如果x小于-1(包括负无穷-Infinity),那么结果是NaN;
4. 如果x是+0,那么结果是+0;
5. 如果x是-0,那么结果是-0;
6. x为其它 [-1, 1] 范围内的数字,结果是正弦值等于x的角的弧度值。
我们知道正弦函数是一个周期函数,即有多个角的正弦值是相同的。那么当我们指定一个正弦值的时候,Math.asin()方法会返回哪一个角呢?对此官方文档作了明确的规定,那就是Math.asin()方法返回的是 [-π / 2, π / 2] 范围内的角。
2. 示例
2.1 参数为[-1, 1]内的数字
因为Math.asin()方法的参数的合法范围是 [-1, 1] ,所以我们先来看看参数正确的情况下Math.asin()方法的作用。虽然+0和-0也是这一范围内的数字,但这里我们先不考虑它们,而是把它们留到第3个例子中。本示例的执行结果如图1所示。
图1 参数在[-1, 1]内的情况
2.2 参数为[-1, 1]外的数字
我们再来看看参数在 [-1, 1] 范围之外时,Math.asin()的返回值。同样的,这里我们先不考虑正无穷和负无穷(Infinity和-Infinity)而是将它们留到示例3中进行展示。下面代码的执行结果如图2所示。
图2 参数在[-1, 1]外的情况
2.3 参数为特殊数字
JavaScript中有几个特殊的数字,它们分别是+0、-0、Infinity、-Infinity和NaN。本示例演示的就是以这些特殊数字为参数而调用Math.asin()方法的效果,它们的执行结果如图3所示。
注意在该示例中,我们用单独的一条打印语句来打印参数为-0的结果。这是因为如果用同一条打印语句来同时打印提示字符串和结果值,那么结果值-0在转换成字符串后就变成了0(+0),打印出的信息会错误地显示-0的反正弦值为0(+0)。
同样的,我们也用单独的一条打印语句来打印参数为+0的结果。这是为了说明Math.asin(+0)的结果确实为+0(0),而不是-0转换为字符串而得来的。
图3 参数为特殊数字的情况
2.4 参数不为数字
最后,我们再来看看Math.asin()的参数不是Number类型的情形。此时参数会先被转换为Number类型,再对该数字求反正弦值,该示例的执行结果如图4所示。
在该示例中,我们同样单独的打印参数为null的结果。这么做的原因也是为了说明Math.asin(null)的结果确实是+0(0),而不是-0转换为字符串而得来的。
图4 参数不是数字的情况
(完)
领取专属 10元无门槛券
私享最新 技术干货