1. 基本概念

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

Math.log2(x);

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

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

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

图2 示例代码的执行结果

(完)