问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

javascript 匿名函数的用途到底是啥?

发布网友 发布时间:2022-04-22 12:08

我来回答

1个回答

热心网友 时间:2023-11-04 01:02


匿名函数的基本形式为(function(){...})();前面的括号包含函数体,后面的括号就是给匿名函数传递参数并立即执行之匿名函数的作用是避免全局变量的污染以及函数名的冲突。
1.小括号的作用
小括号能把我们的表达式组合分块,并且每一块,也就是每一对小括号,都有一个返回值。这个返回值实际上也就是小括号中表达式的返回值。所以,当我们用一对小括号把匿名函数括起来的时候,实际上小括号对返回的,就是一个匿名函数的Function 对象。因此,小括号对加上匿名函数就如同有名字的函数般被我们取得它的引用位置了。所以如果在这个引用变量后面再加上参数列表,就会实现普通函数的调用形式。
简单来说就是小括号有返回值,也就是小括号内的函数或者表达式的返回值,所以说小括号内的function返回值等于小括号的返回值
2.匿名函数的写法
方式1,调用函数,得到返回值。强制运算符使函数调用执行
(function(x,y){
alert(x+y);
return x+y;
}(3,4));
方式2,调用函数,得到返回值。强制函数直接量执行再返回一个引用,引用再去调用执行
(function(x,y){
alert(x+y);
return x+y;
})(3,4);
这种方式也是很多库爱用的调用方式,如jQuery,Mootools。
方式3,使用void
void function(x) {
x = x-1;
alert(x);
}(9);
方式4,使用-/+运算符
-function(x,y){
alert(x+y);
return x+y;
}(3,4);
+function(x,y){
alert(x+y);
return x+y;
}(3,4);
--function(x,y){
alert(x+y);
return x+y;
}(3,4);
++function(x,y){
alert(x+y);
return x+y;
}(3,4);
方式5,使用波浪符(~)
~function(x, y) {
alert(x+y);
return x+y;
}(3, 4);
方式6,匿名函数执行放在中括号内
[function(){
console.log(this) // 浏览器得控制台输出window
}(this)]
方式7,匿名函数前加typeof
typeof function(){
console.log(this) // 浏览器得控制台输出window
}(this)
方式8,匿名函数前加delete
delete function(){
console.log(this) // 浏览器得控制台输出window
}(this)
方式9,匿名函数前加void
void function(){
console.log(this) // 浏览器得控制台输出window
}(this)
方式10,使用new方式,传参
new function(win){
console.log(win) // window
}(this)
方式11,使用new,不传参
new function(){
console.log(this) // 这里的this就不是window了
}
方式12,逗号运算符
function(){
console.log(this) // window
}();
方式13,按位异或运算符
^function(){
console.log(this) // window
}();
方式14,比较运算符
function(){
console.log(this) // window
}();
最后看看错误的调用方式
function(x,y){
alert(x+y);
return x+y;
}(3,4);
匿名函数的N种写法如下所示
匿名函数没有实际名字,也没有指针,怎么执行?
关于匿名函数写法,很发散~
+号是让函数声明转换为函数表达式。汇总一下
最常见的用法:
代码如下:
(function() {
alert('water');
})();
当然也可以带参数:
代码如下:
(function(o) {
alert(o);
})('water');
想用匿名函数的链式调用?很简单:
代码如下:
(function(o) {
console.log(o);
return arguments.callee;
})('water')('down');
常见的匿名函数都知道了,看看不常见的:
代码如下:
~(function(){
alert('water');
})();//写法有点酷~
代码如下:
void function(){
alert('water');
}();//据说效率最高~
代码如下:
+function(){
alert('water');
}();
代码如下:
-function(){
alert('water');
}();
代码如下:
~function(){
alert('water');
}();
代码如下:
!function(){
alert('water');
}();
代码如下:
(function(){
alert('water');
}());//有点强制执行的味道~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 黑龙江债权转让合同纠纷该怎样取证 安徽债权转让合同纠纷应该怎么样取证 房产官司律师费多少 我是男生,我净身高1米7,是不是很矮? JavaScript 匿名函数有哪几种执行方式 C反映蛋白在正常值内增高为啥 javascript 中 匿名函数后面括号中函数怎么调用 是什么意思? (function(){ }(this, function(obj){ })) 这句日语是什么意思呢? javascript匿名函数 js 外部怎样调用闭包匿名函数内的方法 免疫球蛋白在正常范围内增高意味着什么 matlab 匿名函数 穿内增高踩逆天高跟鞋,明星们的身高有多少水分? python 中的匿名函数 平跟是什么意思 js 的匿名函数 它是怎么调用的 怎么运作 "内增高鞋.昨天到了. 打开一看.妈呀.怎么那么高啊.远远不只3厘米.差不多有8厘米了. 太高了.不好意思穿. JavaScript 匿名函数有哪几种执行方式 第五腰椎可见局灶性放射性摄取内增高是什么意思 诊断意见为第五腰椎局部骨质代谢增高 求高人指点 javascript中的匿名函数是怎么被调用的,有几种方法 不理解内增高鞋的意义?用内增高鞋改变? 穿内增高鞋走路会累吗? 人本内增高撒意思,谢谢 Javascript 的原型链方法怎么调用匿名函数 java的匿名函数怎么用 js中匿名函数问题 利用匿名函数法定义函数y=2 x*sin(3x)的指令 是]? 404 Not Found 什么叫匿名函数 javascript中匿名函数何时用 匿名函数的好处 moza可以在ps5上用么 2022年3月9日后回吉林需要什么手续? 手机怎么样防盗 猫咪最喜欢破坏什么东西? 梅艳芳是因为什么原因去世的? 苏州今天康复医院能进吗? 一个人欠了别人的钱很久但还了,别人怎么想 null跪求温特沃斯第二季网盘资源 有什么剪切视频的软件吗 农行app还款到期日 梅艳芳是因为什么原因去世的? 有哪些好的视频编辑剪切的软件呢?