当前位置: 首页 > 图文教程 > Java技术 > Java基础 > Java基础:小编浅谈JavaScript中自定义函数那些事

Java基础
java基础:小编浅谈java对象
Java基础:孙鑫谈Java中文乱码问题产生原因分析(一)
Java基础:孙鑫谈Java中文乱码问题产生原因分析(二)
Java基础:小编谈JDBC
Java基础:小编详谈Java编码规则并不是老生常谈
Java基础:小编详谈AOP概念
Java基础:小编谈java多维数组
Java基础:小编谈Javascript之DOM的使用(25条)
Java基础:小编杂谈动态语言
Java基础:程序员之家七月份Java基础总结
Java基础:XHTML中css+div布局(经典8条)
Java基础:小编浅谈Spring基于三大模板的Web表示层技术
Java基础:浅谈多线程那点事
Javai基础:浅谈封装的那些事
Java基础:小编浅谈JavaScript中自定义函数那些事
Java基础:小编谈JavaScript中使用原型来创建对象
Java基础:CSS那些事
Java基础:小编对JavaScript的一些认识
Java基础:小编浅谈JavaScript与Java区别何在
Java基础:小编谈继承的语法

Java基础:小编浅谈JavaScript中自定义函数那些事


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 116 ::
收藏到网摘: n/a

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

 

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

 

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

 

// 测试整数的函数。

function integerCheck(a, b, c)

{

   // 测试。

   if ( (a*a) == ((b*b) + (c*c)) )  

      return true;

 

   return false;

} // 整数检查函数的结尾。

 

// 测试浮点数的函数。

function floatCheck(a, b, c)  

{

   // 得到测试数值。

   var delta = ((a*a) - ((b*b) + (c*c)))

 

   // 测试需要绝对值

   delta = Math.abs(delta);

 

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

   if (delta < epsilon)  

      return true;

 

   return false;

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

 

 

// 三元检查。

function checkTriplet(a, b, c)

{

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

   var d = 0;

 

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

 

   // 需要的话交换 a b

   if (b > a)

   {

      d = a;

      a = b;

      b = d;

   }

 

   // 需要的话交换 a c

   if (c > a)

   {

      d = a;

      a = c;

      c = d;

   }

 

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

   if (((a % 1) == 0) && ((b % 1) == 0) && ((c % 1) == 0))

   {

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

      return integerCheck(a, b, c);

   }

   else

   {

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

      return floatCheck(a, b, c);

   }

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

 

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

var sideA = 5;

var sideB = 5;

var sideC = Math.sqrt(50.001);

 

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

var result = checkTriplet(sideA, sideB, sideC);