【javascript】关于函数的定义
2012-12-17 15:31
232 查看
函数使用关键字 function 来定义,定义的方式有两种——函数定义表达式和函数声明语句。下面示例代码中的两种定义写法:
尽管函数声明语句和函数定义表达式包含相同的函数名,但二者仍然不同。和通过 var 声明变量一样,函数定义语句中的函数被显式地“提前”到了脚本或函数的顶部。因此它们在整个脚本和函数内都是可见的。使用 var 的话,只有变量声明提前了——变量的初始化代码仍然在原来的位置。然而使用函数声明语句的话,函数名称和函数体均提前:脚本中的所有函数和函数中的所有嵌套的函数都会在当前上下文中其他代码之前声明。也就是说,可以在声明一个 javascript 函数之前调用它。
上面的代码,由于 square 是函数定义表达式并且定义在了最后,导致在执行 distance 函数的时候,square 的值是 undefined。
解决方法:
1、将函数定义表达式写法改成函数声明语句写法。
2、将函数定义表达式写在执行函数(distance(0,0,3,4);)之前。
//函数定义表达式 var square = function(x){ return x * x; }; //函数声明语句 function square(x){ return x * x; };
尽管函数声明语句和函数定义表达式包含相同的函数名,但二者仍然不同。和通过 var 声明变量一样,函数定义语句中的函数被显式地“提前”到了脚本或函数的顶部。因此它们在整个脚本和函数内都是可见的。使用 var 的话,只有变量声明提前了——变量的初始化代码仍然在原来的位置。然而使用函数声明语句的话,函数名称和函数体均提前:脚本中的所有函数和函数中的所有嵌套的函数都会在当前上下文中其他代码之前声明。也就是说,可以在声明一个 javascript 函数之前调用它。
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>js-function</title> </head> <body> </body> </html> <script type="text/javascript"> distance(0,0,3,4); //函数声明语句————无论定义在哪里,都会被“提前”到脚本或函数的顶部。 function distance(x1,y1,x2,y2){ var dx = x2 - x1; var dy = y2 - y1; alert(Math.sqrt(square(dx) + square(dy))); }; //函数定义表达式————只有变量声明提前了,而变量的初始化代码仍然在原来的位置。需要注意js执行顺序。 var square = function(x){ return x * x; }; </script>
上面的代码,由于 square 是函数定义表达式并且定义在了最后,导致在执行 distance 函数的时候,square 的值是 undefined。
解决方法:
1、将函数定义表达式写法改成函数声明语句写法。
2、将函数定义表达式写在执行函数(distance(0,0,3,4);)之前。
相关文章推荐
- 关于JavaScript的函数定义及调用
- 关于javascript中函数的定义
- 关于JavaScript中函数的定义、对象以及对象实例化的理解
- 关于Javascript定义函数和this使用的两点注意的地方
- 关于JavaScript:Math 三个函数
- 关于javascript数组的定义与其一些常用方法总结
- JavaScript作用域、上下文环境、函数对象的定义与调用、匿名函数的定义与调用、闭包
- JavaScript中函数函数的定义与变量的声明<基础知识一>
- 关于头文件重复包含以及函数重定义问题
- 关于javascript定义function的探讨
- 关于javascript事件触发多个函数的使用
- JavaScript中关于函数
- javascript中的预定义函数
- 关于JavaScript parseFloat() 函数精度不一致的问题
- 关于结构体的操作符重载和定义在内部的函数
- opengl 关于glGenBuffers函数没有定义
- 关于宗函数f(t)下的一对单边函数的拉普拉斯的正反变换中左,右边函数的相关求法,证明及相关定义,补充Z变换的同理求法
- JavaScript中函数的定义
- JavaScript:关于document.execCommand()函数可用参数大解析
- 关于javascript中parseInt函数的一个所谓的bug