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

Java基础
Java串行端口技术协议
Java 1.5中面向方面(AOP)编程
实现基于Aspectwerkz的AOP开发
EJB 3.0开发指南之消息驱动Bean
Java堆的管理--垃圾回收
EJB 3.0开发指南之依赖注入
EJB3.0开发指南之有状态会话Bean
EJB3.0开发指南之无状态会话Bean
基于Java的企业分布式应用
J2SE5.0新特性之ProcessBuilder
J2SE5.0新特性之使用代理服务器
Java数据对象技术JDO
Java中ThreadLocal的设计与使用
Hibernate下数据批量处理
Java程序设计中的接口应用
Java中利用JMF编写摄像头拍照程序
性能、规模、风险 初评hibernate
Struts+Hibernate中解决汉字编码
Spring Framework标记库初学指南
基于Java的IDEA加密算法

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 127 ::
收藏到网摘: 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);