匿名函数自执行
来源:互联网 发布:声鉴图用什么软件做 编辑:程序博客网 时间:2024/05/24 03:23
Javascript中定义函数的方式有多种,函数直接量就是其中一种。如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数。好,看看匿名函数的如何被调用。
方式1,调用函数,得到返回值。强制运算符使函数调用执行
1
2
3
4
(
function
(x,y){
alert(x+y);
return
x+y;
}(3,4));
方式2,调用函数,得到返回值。强制函数直接量执行再返回一个引用,引用再去调用执行
1
2
3
4
(
function
(x,y){
alert(x+y);
return
x+y;
})(3,4);
这种方式也是很多库爱用的调用方式,如jQuery,Mootools。
方式3,使用void
1
2
3
4
void
function
(x) {
x = x-1;
alert(x);
}(9);
方式4,使用-/+运算符
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-
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,使用波浪符(~)
1
2
3
4
~
function
(x, y) {
alert(x+y);
return
x+y;
}(3, 4);
方式6,匿名函数执行放在中括号内
1
2
3
[
function
(){
console.log(
this
)
// 浏览器得控制台输出window
}(
this
)]
方式7,匿名函数前加typeof
1
2
3
typeof
function
(){
console.log(
this
)
// 浏览器得控制台输出window
}(
this
)
方式8,匿名函数前加delete
1
2
3
delete
function
(){
console.log(
this
)
// 浏览器得控制台输出window
}(
this
)
方式9,匿名函数前加void
1
2
3
void
function
(){
console.log(
this
)
// 浏览器得控制台输出window
}(
this
)
方式10,使用new方式,传参
1
2
3
new
function
(win){
console.log(win)
// window
}(
this
)
方式11,使用new,不传参
1
2
3
new
function
(){
console.log(
this
)
// 这里的this就不是window了
}
方式12,逗号运算符
1
2
3
1,
function
(){
console.log(
this
)
// window
}();
方式13,按位异或运算符
1
2
3
1^
function
(){
console.log(
this
)
// window
}();
方式14,比较运算符
1
2
3
1>
function
(){
console.log(
this
)
// window
}();
最后看看错误的调用方式
1
2
3
4
function
(x,y){
alert(x+y);
return
x+y;
}(3,4);
相关:
http://benalman.com/news/2010/11/immediately-invoked-function-expression
阅读全文
0 0
- 匿名自执行函数
- 自执行匿名函数
- 自执行匿名函数
- 匿名函数自执行
- 匿名函数自执行
- 自执行匿名函数
- 自执行函数,匿名函数
- javascript自执行匿名函数
- javascirpt匿名自执行函数
- javascirpt 匿名自执行函数
- JS匿名自执行函数
- 匿名自执行函数是闭包吗?
- 自执行匿名函数剖析
- javascript 匿名自执行函数
- JS匿名自执行函数
- JS匿名自执行函数
- javascript自执行匿名函数
- JavaScript自执行匿名函数
- linux ssh 实现免密登录(centos7)
- 数据结构第二周项目1--C/C++语言中函数传递的三种方式之方法三引用作形参
- JetBrains phpsteam websteam Intellij注册码
- git安装后配置个人的账号信息
- Linux分区问题
- 匿名函数自执行
- HDU 1203 乘法 01背包
- 算法题:BFS之出门最佳
- n个元素进栈,共有多少种出栈顺序?
- Java的三种代理模式
- Spring中Bean的property,ref引发的小问题
- 使用 Diff 和 Meld 工具比较两个目录的不同处
- tf.nn.sparse_softmax_cross_entropy_with_logits()函数的用法
- Scala III