快捷搜索:  汽车  科技

js 改写方法的逻辑:JavaScript用Math.log2求对数

js 改写方法的逻辑:JavaScript用Math.log2求对数4. 如果x是1,那么结果是 0;3. 如果x是零(包括 0和-0),那么结果是负无穷(-Infinity);具体来说,Math.log2()方法的结果由以下规则决定;结合log2(x)的函数图像以及JavaScript的5个特殊数字(NaN、 0、-0、正无穷和负无穷),可以很容易地理解这些规则。1. 如果x是NaN,那么结果是NaN;2. 如果x小于0,那么结果是NaN;因为此时x在函数的定义域之外;

js 改写方法的逻辑:JavaScript用Math.log2求对数(1)

1. 基本概念

Math.log2()方法计算一个数的以2为底数的对数,该方法的名称中的数字2即表示该方法所求的对数是以2为底数的。它的语法形式如下所示:

Math.log2(x);

因为该方法就是要计算其参数x的以2为底的对数,因此x必须是一个数字,即它属于Number类型。如果x不是数字,那么它会先被自动转换为数字。

在中学时我们学过对数函数的定义域为(0, ∞),值域为(-∞, ∞);log2(x)的函数图像如图1所示。

js 改写方法的逻辑:JavaScript用Math.log2求对数(2)

图1 log2(x)的函数图像

具体来说,Math.log2()方法的结果由以下规则决定;结合log2(x)的函数图像以及JavaScript的5个特殊数字(NaN、 0、-0、正无穷和负无穷),可以很容易地理解这些规则。

1. 如果x是NaN,那么结果是NaN;

2. 如果x小于0,那么结果是NaN;因为此时x在函数的定义域之外;

3. 如果x是零(包括 0和-0),那么结果是负无穷(-Infinity);

4. 如果x是1,那么结果是 0;

5. 如果x是正无穷( Infinity),那么结果是正无穷;

6. 其余情况下,x是区间(0, ∞)中的一个普通数字,结果就是x的以2为底的对数。

对于规则3,从数学意义上来说其实零也在log2(x)的定义域之外。但JavaScript这样规定也有它的道理,那就是当x趋近于零时,log2(x)趋近于负无穷。如果你传递的x不是数字,那么以上这些规则中所说的x的值指的是它被转换为数字后的值。

2. 示例

本小节展示用不同参数调用Math.log2()方法时的返回值,以下代码的执行结果如图2所示。

<script> /* 下面3个方法调用中,参数都是普通数字 */ var value1 = Math.log2(1); console.log("Math.log2(1):"); console.log(value1); var value2 = Math.log2(-5); console.log("\nMath.log2(-5):"); console.log(value2); var value3 = Math.log2(2); console.log("\nMath.log2(2):"); console.log(value3); /* 下面3个方法调用中的参数都是特殊数字 */ var value4 = Math.log2(NaN); console.log("\nMath.log2(NaN):"); console.log(value4); var value5 = Math.log2(-0); console.log("\nMath.log2(-0):"); console.log(value5); var value6 = Math.log2( Infinity); console.log("\nMath.log2( Infinity):"); console.log(value6); /* * 布尔值true转换成数字为1,因此 * Math.log2(true)等价于Math.log2(1) */ var value7 = Math.log2(true); console.log("\nMath.log2(true):"); console.log(value7); </script>

js 改写方法的逻辑:JavaScript用Math.log2求对数(3)

图2 示例代码的执行结果

(完)

猜您喜欢: