
在使用JavaScript的时候,有时需要间隔地执行一个方法,例如用来产生网页UI动画特效。这时常常会使用方法setInterval或setTimeout,但是由于这两种方法是由脚本宿主模拟出来的Timer线程,通过其调用的方法是不能为其传递参数的。本节代码主要使用了 onClick 事件、setTimeout 方法和 alert 方法,主要功能和用法如下:
工具/原料
Windows + 浏览器 +Adobe Dreamweaver
步骤/方法
当用鼠标单击页面的标签时,onClick 事件会被触发。该事件可以调用相应的函数,作为其事件处理函数。在函数中,可以是任意合法的JavaScript代码。
setTimeout 方法在执行时是在载入后延迟指定时间后,去执行一次表达式,仅执行一次。
alert 方法有一个参数,即希望对用户显示的文本字符串,该字符串不是 HTML 格式。该消息框提供了一个“确定”按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说,用户必须先关闭该消息框然后才能继续进行 *** 作。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>使用匿名函数为定时器传递参数</title>
<script language="javascript">
var userName = 'jack'; //根据用户名显示欢迎信息
function hello(_name)
{
alert('hello, ' + _name);
}
function _hello(_name) //创建一个函数,用于返回一个无参数函数
{
return function() {
hello(_name);
}
}
function foo() //函数:直接调用
{
windowsetTimeout(hello(userName), 3000); //直接调用hello函数
}
function bar() //函数:间接调用
{
windowsetTimeout(_hello(userName), 3000); //使用匿名函数为定时器传递参数
}
</script>
</head>
<body>
<center>
<h1>使用匿名函数为定时器传递参数</h1>
<hr>
<br>
<h5>单击相应按钮</h5>
<form name="form1" method="post" action="">
<label>
<input type="button" onClick="foo()" name="button" id="button" value="hello">
</label>
<label>
<input type="button" onClick="bar()" name="button2" id="button2" value="_hello">
</label>
</form>
</center>
</body>
</html>
运行该程序后,页面中出现一组按钮,单击第一个按钮时立即d出相应的消息框,如下图所示。单击“OK”按钮关闭消息框后单击第二个按钮,三秒钟后才d出相应的消息框,如下图所示。
END
注意事项
在函数foo()中,使用 setTimeout 方法延时调用hello函数并传入参数。其实这样调
用是错误的,因为以string literals形式的方法调用,param 必须是全局变量(即 window 对象上的变量)才行;而function pointer 形式的调用,完全错误了,这是把函数的返回值当成了setTimeout/setInterval函数的参数了,完全不是所期望的结果。
从实验的现象上看,第二次调用的println("hi") 并没有被定义在函数体内:
第一次调用,相当于:
scala> val f1 = (i:Int) => { println("hi"); println(i) }
f1: Int => Unit = <function1>
scala> fun(f1)
hi
10
hi
20
第二次调用,相当于:
scala> val f2: (Int) => Unit = {println("hi");println(_)}
hi
f2: Int => Unit = <function1>
scala> fun(f2)
10
20
第二次调用打印hi的地方是在定义f2这个函数的地方,而不是在fun(f2)内
具体原因我也解释不了
b1,b2,function(d1)为形参
c1为实参,d1的实际参数在 a函数的定义中,
比如
function a(b1,b2){
consolelog(b1);
b2(1);//传入参数d1的调用 这里 1就代表d1
}
var c1 = 1;//不定义实参会报错
a(c1, function(d1){alert(d1);})//传入参数d1
匿名函数:使用lambda创建的函数,所谓匿名,意即不再使用def语句这样标准的形式定义一个函数。
好处:
1、使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
2、对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
3、使用lambda在某些时候让代码更容易理解。了解更多python匿名函数相关知识,可以来老男孩教育。
应用场景:经常与一些内置函数相结合使用,比如说map()、filter()、sorted()、reduce()等。
表达式格式:lambda 参数列表:lambda体
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)