JavaScript的匿名函数
程序员文章站
2022-03-02 12:06:00
...
匿名函数,就是没有名字的函数。
一般的有名函数:
function myFun( a,b ){
console.info( a+b );
}
myFun( 10 , 30 ); // 输出40
匿名函数: 有关键词 function, 有小括号,有大括号,就是没有函数名。
function(a,b){
console.info( a+b );
}
想要执行它,怎么执行?没有名字,怎么调用?
方式一:把它放进一个变量里,这个变量就相当于一个函数名了。没有名字的匿名函数,变成有“名”函数了。
let myFun = function( a,b ){
console.info( a+b);
};
myFun( 10,30 );
方式二:干脆不要名字,直接执行~!-- 这么做可以在内容形成局部变量和局部函数,防止全局污染。
个人常用的直接执行匿名函数的方式
(匿名函数)();
(匿名函数() );
(function(a,b){
console.info( a+b );
})(10,30);
(function(a,b){
console.info( a+b );
}(10,30));
其他直接调用的方式显得比较怪异了。
// 在function前面加一元操作符号
!function () { /* code */ } ();
~function () { /* code */ } ();
-function () { /* code */ } ();
+function () { /* code */ } ();
// 在function前面添加 new 关键词
new function () { /* code */ }
new function () { /* code */ } () // 如果需要传递参数,只需要加上括弧()
方式三:利用事件去调用。
let btn = document.getElementById("btn"); // 找到页面某个标签
// 添加事件
btn.onclick = function(){
console.info("你点了我!");
}
方法四:作为对象的方法调用
let myObj = {
name : "John",
sayHello:function(){
console.info("Hello,"+ this.name );
}
};
myObj.sayHello();
方法五:作为另一个函数的参数。
你没看错,函数也可以作为另一个函数的参数的。当然有名函数也可以做参数。
function myFun(fn){
fn();
}
myFun( function(){
console.info("这个匿名函数是个参数");
});
呃,就这么多吧。后面想起了再补充~