目录搜索
文字
分享


JScript 函数

Microsoft Jscript 函数执行操作,也可以返回值。某些时候是计算或比较的结果。函数又被称为“全局方法”。

一个函数中包含有几个操作。这样可使得代码更合理化。可以写一组语句并给其命名,然后通过调用它并传递其需要的信息来运行整组语句。

给函数传递信息可以把信息放在函数名称后面的圆括号中。传递给函数的信息称作参数。某些函数根本不带任何参数,而其他函数带一个或者多个参数。在某些函数中,参数的个数取决于如何使用该函数。

Jscript 支持两种函数:一类是语言内部的函数,另一类是自己创建的。

特殊的内部函数

Jscript 语言包含很多内部函数。某些函数可以操作表达式和特殊字符,而其他函数将字符串转换为数值。一个有用的内部函数是 eval()。该函数可以对以字符串形式表示的任意有效的 Jscript代码求值。eval() 函数有一个参数,该参数就是想要求值的代码。下面给出一个使用本函数的示例。

1

2

3

4

5

6

<code>var anExpression = "6 * 9 % 7";

var total = eval(anExpression); // </code>将变量<code> total </code>赋值为<code> 5</code>。

<code>var yetAnotherExpression = "6 * (9 % 7)";</code>

<code>total = eval(yetAnotherExpression) // </code>将变量<code> total </code>赋值为<code> 12</code>。

<code>// </code>将一个字符串赋给<code> totality </code>(注意嵌套引用)

<code>var totality = eval("’...surrounded by acres of clams.’");</code>

有关内部函数的详细信息请参考语言参考。

创建自己的函数

在必要的时候,可以创建并使用自己的函数。一个函数的定义中包含了一个函数语句和一个 Jscript 语句块。

下面示例中的 Checktriplet 函数以三角形的边长为参数。通过查看三条边的长度是否可以组成一个毕达哥拉斯三元组(直角三角形斜边长度的平方等于其他两条边长的平方和)来计算该三角形是否为直角三角形。实际测试时 checkTriplet 函数要调用另两个函数中的一个函数。

注意在浮点数测试版本中极小数(“epsilon”)作为测试变量的使用。由于浮点运算的不确定性和舍入误差,除非问题中的三个值均已知为整数,直接测试这三个数是否组成毕达哥拉斯三元组是不可行的。因为直接的测试更为准确,本示例中的代码确定其是否可行,如果可行则使用它。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

<code>var epsilon = 0.00000000001; // </code>一些需要测试的极小数字。

 

<code>// </code>测试整数的函数。

<code>function integerCheck(a, b, c) </code>

<code>{</code>

<code>   // </code>测试。

<code>   if ( (a*a) == ((b*b) + (c*c)) )   </code>

<code>      return true;</code>

 

<code>   return false;</code>

}<code> // </code>整数检查函数的结尾。

 

<code>// </code>测试浮点数的函数。

<code>function floatCheck(a, b, c)   </code>

<code>{</code>

<code>   // </code>得到测试数值。

<code>   var delta = ((a*a) - ((b*b) + (c*c)))</code>

 

<code>   // </code>测试需要绝对值

<code>   delta = Math.abs(delta);</code>

 

<code>   // </code>如果差小于<code> epsilon</code>,那么它相当接近。

<code>   if (delta < epsilon)   </code>

<code>      return true;</code>

 

<code>   return false;</code>

}<code> // </code>浮点检查函数的末尾。

 

 

<code>// </code>三元检查。

<code>function checkTriplet(a, b, c)</code>

<code>{ </code>

<code>   // </code>创建临时变量,用于交换值

<code>   var d = 0; </code>

 

<code>   // </code>先将最长的移动到位置“<code>a</code>”。

 

<code>   // </code>需要的话交换<code> a </code>和<code> b</code>

<code>   if (b > a)</code>

<code>   {</code>

<code>      d = a;</code>

<code>      a = b;</code>

<code>      b = d;</code>

<code>   }</code>

 

<code>   // </code>需要的话交换<code> a </code>和<code> c</code>

<code>   if (c > a)</code>

<code>   {</code>

<code>      d = a;</code>

<code>      a = c;</code>

<code>      c = d;</code>

<code>   }</code>

 

<code>   // </code>测试全部的<code> 3 </code>个值,看其是否为整数?

<code>   if (((a % 1) == 0) && ((b % 1) == 0) && ((c % 1) == 0))</code>

<code>   { </code>

<code>      // </code>如果成立,使用精确检查。

<code>      return integerCheck(a, b, c); </code>

<code>   }</code>

<code>   else</code>

<code>   {</code>

<code>      // </code>如果不成立,取尽可能相近的。

<code>      return floatCheck(a, b, c); </code>

<code>   }</code>

}<code> // </code>三元检查函数的末尾。

 

<code>// </code>下面的三个语句赋给范例值,用于测试。

<code>var sideA = 5;</code>

<code>var sideB = 5;</code>

<code>var sideC = Math.sqrt(50.001);</code>

 

<code>// </code>调用函数。调用后,<code>'result' </code>中包含了结果。

<code>var result = checkTriplet(sideA, sideB, sideC);</code>

上一篇:下一篇: