Math.exp()方法返回e的x次幂(也叫e的x次方,e是底数而x是指数),其中x是传递给Math.exp()的参数,而e是自然常数,它的值约等于2.718281828459045。exp是单词"exponential"的前三个字母构成的缩写形式,而"exponential"的含义就是“指数”。因此Math.exp()方法的名字就暗含了它的参数就是指数,同时它固定了底数为e。
调用Math.exp()方法的语法如下所示:
Math.exp(x);
根据对Math.exp()方法的作用的描述,我们就知道它的参数x应该是Number类型的(即x要是一个数字)。如果你传递了一个非Number类型的参数,那么该参数会先被自动转换为Number类型。
Javascript的Number类型除了包含普通数字外,还包含几个特殊的数字,即NaN、 0、-0、正无穷( Infinity)和负无穷(-Infinity)。当Math.exp()方法的参数和结果为这些特殊数字时我们需要额外注意,具体就是以下几点:
1. 如果x是NaN,那么结果是NaN;
2. 如果x是 0,那么结果是1;
3. 如果x是-0,那么结果是1;
4. 如果x是正无穷( Infinity),那么结果是正无穷;
5. 如果x是负无穷(-Infinity),那么结果是 0;
6. 其余情况下,x是一个普通数字,那么就直接按照e的x次方计算结果。
如果最开始x不是一个数字的话,那么以上这些规则中所说的x的值指的是它被转换为数字后的值。其实这些规则都很简单,它们的本质都是一样的,都是对e的x次方这一计算过程的运用,只是需要对参数x和结果为特殊数字的情形稍加注意而已。
2. 示例既然Math.exp()方法的参数可以是普通数字、特殊数字以及不是数字,那么我们就根据这三种情况分别给出示例代码,以便清楚地看到Math.exp()方法的结果。
2.1 参数是普通数字<script> var value1 = Math.exp(1); console.log("Math.exp(1):"); console.log(value1); var value2 = Math.exp(-5); console.log("\nMath.exp(-5):"); console.log(value2); var value3 = Math.exp(10.3); console.log("\nMath.exp(10.3):"); console.log(value3); var value4 = Math.exp(-8.6); console.log("\nMath.exp(-8.6):"); console.log(value4);</script>
上面这段代码的执行结果如图1所示:
图1 参数为普通数字时的结果
2.2 参数是特殊数字<script> var value1 = Math.exp(NaN); console.log("Math.exp(NaN):"); console.log(value1); var value2 = Math.exp( 0); console.log("\nMath.exp( 0):"); console.log(value2); var value3 = Math.exp(-0); console.log("\nMath.exp(-0):"); console.log(value3); var value4 = Math.exp( Infinity); console.log("\nMath.exp( Infinity):"); console.log(value4); var value5 = Math.exp(-Infinity); console.log("\nMath.exp(-Infinity):"); console.log(value5);</script>
图2展示了该示例的执行结果:
图2 参数为特殊数字时的结果
2.3 参数不是数字<script> var value1 = Math.exp("1.000"); console.log('Math.exp("1.000"):'); console.log(value1); var value2 = Math.exp(false); console.log("\nMath.exp(false):"); console.log(value2); var value3 = Math.exp(window); console.log("\nMath.exp(window):"); console.log(value3); var value4 = Math.exp(null); console.log("\nMath.exp(null):"); console.log(value4);</script>
该示例代码的执行结果如图3所示,需要注意的是当参数不是数字的时候,Math.exp()方法会先将参数转换为数字再计算结果。
图3 参数需要转换时的结果
(完)