js学习(16)----函数声明和函数作为参数
2017-08-25 20:52
225 查看
1.函数声明和函数表达式
函数声明需要被调用才会执行相应的内容,而函数表达式则相当于调用了函数。如下:
// 这是函数声明,没有看到;号 function sum(num1, num2) { // 函数体 }
// 这是函数表达式 var result = function(num1, num2) { // 函数体 }
2.声明提升(function declaration hoisting)
函数声明和函数表达式涉及到到函数声明提升的问题。即在js中,函数声明会被提到顶部,解析器会率先读取函数声明,并使得其在执行任何代码之前可以执行;而表达式则必须等到解析器执行到它所在的代码行时,才会真正地被解释执行。
注:对于函数表达式中的函数定义是不会提前的。
注:对于变量,变量也会声明提前,但是变量的初始化则在代码所在的位置执行,不会提前。
<!DOCTYPE html> <html> <head> </head> <body> <p id="result">Show</p> <script type="text/javascript"> alert(sum(4, 2)); function sum(num1, num2) { return num1 + num2; } function sum(num1, num2) { return (num1 + num2) * 2; } </script> </body> </html>
上面的代码可以正常的运行并且输出结果是12;
原因是:声明提前,但是因为第二个函数定义的名称与参数与第一个相同,所以覆盖了第一个,声明提前后,当执行到语句alert(sum(4, 2))时,就会得到相应的结果,所以是12。
3.函数作为参数
一个函数可以想传递参数一样传递给另一个函数。举个例子:
<!DOCTYPE html> <html> <head> </head> <body> <p id="result">Show</p> <script type="text/javascript"> function addOne(num) { return num + 1; } function callSomeFunction(someFunction, someArgument) { return someFunction(someArgument); } var result = callSomeFunction(addOne, 1); alert(result); </script> </body> </html>
4.返回一个函数
一个函数可以作为另外一个函数的结果返回。举个例子:
注:数组的sort方法可以传入一个函数作为参数,因为如果是按照默认的排序方式的话,10小于2(因为1的ASCII码比2小),但是这不符合我们的要求,所以常常会传入一个比较函数。
<script type="text/javascript"> function createCompareFunction(propertyName) { return function(object1, object2) { var value1 = object1[propertyName]; var value2 = object2[propertyName]; if (value1 > value2) { return 1; } else if (value1 < value2) { return -1; } else { return 0; } } } var data = [{name:"Ann", age:20}, {name:"Tome", age:22}]; data.sort(createCompareFunction("name")); </script>
相关文章推荐
- 二维数组作为函数参数传递时函数的声明
- 关于作为函数参数的多维数组的声明、定义和调用
- c++中关于数组作为函数参数并传递数组元素个数的几种有效方法的讨论
- ES6学习笔记---对象作为函数参数 的解构
- 编程题:数组名作为函数参数。需要根据下面要求来实现
- 将“引用”作为函数参数有哪些特点?
- 作为函数参数的指针
- 数组作为函数的参数
- 17周---项目1-体会函数参数传递---用引用作为形参
- 021day(指针的运算和指针作为函数参数的用法)
- C++ 中如何用 vector类作为函数的参数
- 2.4 作为函数参数的指针
- 指针作为函数参数传递
- 对象作为函数参数
- oracle Array类型作为参数传入函数(存储过程) 大字符串参数解决方案
- 二维数组如何作为函数的参数传递
- C语言中,数组名作为参数传递给函数时,退化为指针
- 指针作为函数参数的
- 引用作为函数参数的例子,有很多知识点。
- C# 引用类型作为函数参数时