javascript 顶层对象(JavaScript用Math.asin求反正弦值)(1)

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所示。

<script> var value1 = Math.asin(-1); console.log("Math.asin(-1) = " value1); var value2 = Math.asin(1); console.log("Math.asin(1) = " value2); var value3 = Math.asin(0.5); console.log("Math.asin(0.5) = " value3); </script>

javascript 顶层对象(JavaScript用Math.asin求反正弦值)(2)

图1 参数在[-1, 1]内的情况

2.2 参数为[-1, 1]外的数字

我们再来看看参数在 [-1, 1] 范围之外时,Math.asin()的返回值。同样的,这里我们先不考虑正无穷和负无穷(Infinity和-Infinity)而是将它们留到示例3中进行展示。下面代码的执行结果如图2所示。

<script> var value1 = Math.asin(6); console.log("Math.asin(6) = " value1); var value2 = Math.asin(38.2); console.log("Math.asin(38.2) = " value2); var value3 = Math.asin(-5); console.log("Math.asin(-5) = " value3); var value4 = Math.asin(-71.4); console.log("Math.asin(-71.4) = " value4); </script>

javascript 顶层对象(JavaScript用Math.asin求反正弦值)(3)

图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转换为字符串而得来的。

<script> var value1 = Math.asin(NaN); console.log("Math.asin(NaN) = " value1); var value2 = Math.asin( 0); console.log("Math.asin( 0)的值在下面一行单独打印: "); console.log(value2); var value3 = Math.asin(-0); console.log("Math.asin(-0)的值在下面一行单独打印:"); console.log(value3); var value4 = Math.asin(Infinity); console.log("Math.asin(Infinity) = " value4); var value5 = Math.asin(-Infinity); console.log("Math.asin(-Infinity) = " value5); </script>

javascript 顶层对象(JavaScript用Math.asin求反正弦值)(4)

图3 参数为特殊数字的情况

2.4 参数不为数字

最后,我们再来看看Math.asin()的参数不是Number类型的情形。此时参数会先被转换为Number类型,再对该数字求反正弦值,该示例的执行结果如图4所示。

在该示例中,我们同样单独的打印参数为null的结果。这么做的原因也是为了说明Math.asin(null)的结果确实是 0(0),而不是-0转换为字符串而得来的。

<script> /* 字符串"0.5"转换成数字为0.5 */ var value1 = Math.asin("0.5"); console.log('Math.asin("0.5") = ' value1); /* document对象转换成数字为NaN */ var value2 = Math.asin(document); console.log("Math.asin(document) = " value2); /* null转化成数字为0( 0) */ var value3 = Math.asin(null); console.log("Math.asin(null)的值在下面一行单独打印:"); console.log(value3); /* 布尔值true转换成数字为1 */ var value4 = Math.asin(true); console.log("Math.asin(true) = " value4); </script>

javascript 顶层对象(JavaScript用Math.asin求反正弦值)(5)

图4 参数不是数字的情况

(完)

,