!function() 和 +function()

发布于 2020-09-17  781 次阅读


匿名函数

了解!function()+function()之前,需要先了解一下匿名函数。

什么是匿名函数

匿名函数,顾名思义是指没有名字的js函数,类似如下:

function(){
  alert('hello siroi!');
}

但是,当你在控制台直接运行该函数时,会报Function statements require a function name
遇到这种情况时,我们需要用一组括号
( )将它们包起来。

(function (){
  alert('hello siroi');
})

CV到控制台,控制台并没有报错。

匿名函数的执行

尽管控制台没有报错,但是如果不能运行这个函数,匿名函数的意义就没有了。运行匿名函数还是需要一组小括号(其实完全是JavaScript中小括号的意义决定)

小括号有返回值,也就是小括号内的函数或者表达式的返回值,所以说小括号内的function返回值等于小括号的返回值

(function (){
  alert('hello siroi');
})();

匿名函数的参数传递

(function (str){
  alert('hello '+str);
})('siroi');

匿名函数的多次调用

如果想多次调用匿名函数

var a = (function(str){
  alert('hello '+str);
})
a('siroi');
a('gpw');

同样也可以直接链式调用方法

(function(str){
   alert(str);
   return arguments.callee;//可以用于引用该函数的函数体内当前正在执行的函数
})('siroi')('gpw');

! ~ +

回到正题!function()+function()都是匿名函数,只不过不常见了。

匿名函数的用途

匿名函数的用途很多,在页面加载一些js脚本或者js效果,匿名函数是个不错的选择。

关于我
为了实现上面的这篇文章中的聊天框,采用普通的方法js在加载一次后便不会加载,刷新页面也没有用。后采用匿名函数,立即执行简直太香了。

参考资料:https://www.w3cschool.cn/xqw2e7/u7z512vt.html

With great power there must come great responsibility.