<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript">
// 当你送亲戚或朋友回家,送到火车站你一般会说,你到家之后,打个电话给我报下平安;
// 可以把这个打电话报平安动作看做是回调函数;
// A callback is a function that is passed as an argument to another function
// and is executed after its parent function has completed;
// 函数a 有一个参数,这个参数就是函数b, 当函数a 执行完成之后执行函数b, 那么这个过程就叫回调;
// 这里必须强调一点: 函数b 是以参数形式传递给函数a 的,那么函数b 被调用的时候就叫回调函数;
// http://www.cnblogs.com/sharpxiajun/p/4148932.html
function parentFunc(callback)
{
alert("稍等,等父函数准备就绪....执行完成");
callback();
}
function childFunc1()
{
alert("子函数1;作为回调函数1");
}
function childFunc2()
{
alert("子函数2;作为回调函数2");
}
parentFunc(childFunc1);
parentFunc(childFunc2);
// <[回调函数就是一个通过函数指针调用的函数,如果你把函数的指针(地址)作为参数传递给另一个函数;
// 当这个指针被用为调用它所指向的函数时,我们就说这是回调函数,回调函数不是由该函数的实现方法直接调用
// 而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应;]>
// 函数也是对象:
// 想弄明白回调函数,首先得清楚明白函数的规则,在javascript 中,函数是比较奇怪的,但是它确确实实是对象
// 确切地说函数是用Function() 构造函数创建的 Function 对象,Function 对象包含一个字符串,字符串是
// 包含函数体 的javascript 代码,javascript,数据和代码之间的区别是很模糊的;
//可以这样创建函数
var fn = new Function("arg1", "arg2", "return arg1 * arg2;");
fn(2, 3); //6
function fn(arg1, arg2, callback)
{
var num = Math.ceil(Math.random() * (arg1 - arg2) + arg2);
callback(num); //传递结果
}
fn(10, 20, function(num){alert("Callback called! Num: " + num);});
function foo() {
var a = 10;
return function()
{
a *= 2;
return a;
}
}
// 函数在外部调用,依然可以访问变量a,这都是因为javascript中的作用域是词法性的,
// 函数式运行在定义它们的作用域中[foo内部的作用域],而不是运行在此函数的作用域中,只要被定义在foo中,
// 它就可以访问foo中定义的所有的变量,即便是foo的执行已经结束,因为它的作用域会被保存下来,但是也只有
// 返回的那个函数才可以访问这个保存下来的作用域,返回一个内嵌匿名函数是创建闭包最常用的手段;
// http://www.tuicool.com/articles/UZNNj2
var f = foo();
alert(f()); // return20
alert(f()); // return40
alert(f()); // return80
// 另外,最好保证回调存在且必须是函数引用或者函数表达式:
// (callback && typeof(callback) === "function") && callback();
</script>
</head>
<body>
</body>
</html>
javascript 回调函数
最新推荐文章于 2022-07-13 18:11:51 发布