1. 基本概念
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>
/* 字符串"1.000"转换成数字为1.000 */
var value1 = Math.exp("1.000");
console.log('Math.exp("1.000"):');
console.log(value1);
/* 布尔值false转换成数字为 0 */
var value2 = Math.exp(false);
console.log("\nMath.exp(false):");
console.log(value2);
/* window对象转换成数字为NaN */
var value3 = Math.exp(window);
console.log("\nMath.exp(window):");
console.log(value3);
/* null转换成数字为 0 */
var value4 = Math.exp(null);
console.log("\nMath.exp(null):");
console.log(value4);
</script>
该示例代码的执行结果如图3所示,需要注意的是当参数不是数字的时候,Math.exp()方法会先将参数转换为数字再计算结果。
图3 参数需要转换时的结果
(完)
,