匿名函数目前通过哪些函数来获取参数信息的

匿名函数目前通过哪些函数来获取参数信息的,第1张

在使用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体

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12459855.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存