如果我有一大堆这样的代码:
.hover(
function () {
hoverState($("#navbar a").index(this),1);
},
function () {
hoverState($("#navbar a").index(this),-1);
});
Run Code Online (Sandbox Code Playgroud)
有没有办法摆脱匿名函数,只是说:
.hover(
hoverState($("#navbar a").index(this),1),
hoverState($("#navbar a").index(this),-1);
);
Run Code Online (Sandbox Code Playgroud) 我使用Params :: Validate进行验证,但是在回调部分而不是定义直接匿名函数,如果我尝试给出该匿名函数的引用,它会直接跳转到错误记录区而不在块内打印消息(在传递正确值的情况下).
use Params::Validate qw(:all);
our $attributeCallback = sub {
my $parameter = shift;
$parameter =~ m/^\w+$/i ;
};
sub getSingleValue {
eval {
my ($domainName, $attribute) = validate_pos( @_,
{
type => SCALAR,
callbacks => {
'Domain name validation failed' => &$attributeCallback
}
},
{
type => SCALAR,
callbacks => {
'Attribute name validation failed' => sub {
$_[0] =~ m/[\w.-]+$/i }
}
}
);
print "domain name is $domainName and attribute is $attribute";
1;
} …Run Code Online (Sandbox Code Playgroud) 如果我调用test(),它就不起作用.有人可以解释一下吗?
-module(anony).
-export([test/0, test1/0]).
test1() -> "hello".
test() ->
C = fun(F) -> Val = F(), io:format("~p ", [Val]) end,
lists:foreach(debug, [test1]).
Run Code Online (Sandbox Code Playgroud) 如何将匿名函数内的值分配给全局变量或其范围之外的变量.例如,下面的例子.console.log(rows)返回正确的数据,而console.log(result)返回undefined
var result;
this.query(sql).execute(function(error, rows) {
console.log( rows )
result = rows;
});
console.log( result );
Run Code Online (Sandbox Code Playgroud) 哪一个是正确的 - 因为我使用的一些插件显示了我的差异,我想知道为什么?
(function ($) {
//Code
})(jQuery);
(function ($) {
//Code
}(jQuery));
;(function($) {
//Code
}(jQuery));
Run Code Online (Sandbox Code Playgroud)
我假设第一个然而想知道为什么我看到了第二次和第三次迭代?
我看了一下:从Javascript中的嵌套函数返回值
但它并没有真正帮助我(或者我太愚蠢了).
我的变量范围以某种方式关闭,我不明白为什么.我的alert()没有按预期运行.试图在所有行上添加注释来解释我在想什么.
非常感谢任何评论/指点/答案!
var g = {}; / is a large object with all kinds of other stuff and functions in it
g.ding = function(){ // my problem function
var baby = 'young'; // i thought I set a local var here
if(someVar==true) { // standard issue if statement
someAPI.class( // using an API that uses a function as its attribute
function(stuff){ // my anonymous function
baby = 'old'; // setting the var to something
}
);
} …Run Code Online (Sandbox Code Playgroud) 在处理匿名内部类时,我对接口的概念感到困惑.据我所知,您无法在JAVA中实例化接口,因此以下语句会产生编译错误
ActionListener action = new ActionListener(); // compile error
Run Code Online (Sandbox Code Playgroud)
但是当它处理匿名类时会发生什么?为什么允许使用新的?例如
JButton button = new JButton("A");
button.addActionListener(new ActionListener(){ //this is fine
@Override
public void actionPerformed(ActionEvent e){
}
};
Run Code Online (Sandbox Code Playgroud)
编译器只是ActionListener在场景后面创建一个类并实现吗?它是如何工作的 ?
匿名方法是否内联定义?在下面的示例中,委托对象"d"引用了匿名方法,该方法访问Fun方法中定义的"x"变量."x"的范围应限于Fun方法,但是当我们调用MyFun时,它会调用作为参数传递的委托并递增"x"的值.
输出结果是"6",这是怎么发生的?在匿名方法中,"x"的值或首先是"x"变量本身的值是多少?
public delegate void Del();
public void Fun()
{
int x = 5;
Del d = delegate { x++; };
MyFun(d);
Console.WriteLine(x);
}
public static void MyFun(Del d)
{
d();
}
Run Code Online (Sandbox Code Playgroud) 在尝试同时掌握jQuery和JavaScript的一些基础知识时,我有点困惑为什么jQuery将匿名函数作为参数.像这样:
$( "#target" ).click(function() {
alert( "Handler for .click() called." );
});
Run Code Online (Sandbox Code Playgroud)
与此相反:
$( "#target" ).click(alert("You clicked it."));
Run Code Online (Sandbox Code Playgroud)
在jQuery自己的"101"指南中,他们指出"将函数作为参数传递是jQuery中非常常见的习惯用法".但他们似乎没有解释原因.它只是为一组表达式提供一个包装器,或者(我怀疑)远不止于此?
有人可以解释一下
1。onChange= () => console.log("Changed")
2。onChange= console.log("Changed")
我自己看不出有什么区别,那么使用选项1有什么意义?
我在这里使用React。