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);

这种方式也是很多库爱用的调用方式,如jQueryMootools

方式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);
 

js匿名函数运行的方法的更多相关文章

  1. JS匿名函数的理解

    js匿名函数的代码如下:(function(){ // 这里忽略jQuery 所有实现 })(); 半年前初次接触jQuery 的时候,我也像其他人一样很兴奋地想看看源码是什么样的.然而,在看到源码的 ...

  2. js匿名函数和闭包总结

    js匿名函数和闭包总结 一.总结 一句话总结:匿名函数的最主要作用是创建闭包,闭包就是将函数内部和函数外部连接起来的一座桥梁.内层的函数可以使用外层函数的所有变量,即使外层函数已经执行完毕.闭包可以用 ...

  3. js匿名函数(变量加括号就是函数)

    js匿名函数(变量加括号就是函数) 一.总结 变量加括号就是函数,而函数的括号是用来传参的 1.类比:以正常函数去想匿名函数,匿名函数比正常函数只是少了函数名,本质还是一样,该怎么传参还是怎么传参,小 ...

  4. js匿名函数确实是个好东西

    <body onload="alert('http://www.baidu.com/');"> <script type="text/javascrip ...

  5. JS匿名函数自执行函数

    JS匿名函数自执行函数:(function(){})();(function(){}) 这是一个函数,函数后面接(),则是调用函数 比如(function(arg){console.log(arg); ...

  6. js匿名函数自执行的好处

    我们知道,在创建一个函数时如果要用到变量来存取信息的话,要尽量使用局部变量. 因为一方面局部变量会随着函数的执行结束被销毁:另一方面在不执行函数的时候也不会创建这个局部变量,对节省空间资源有很大的好处 ...

  7. js匿名函数测试

    js匿名函数测试 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

  8. js 匿名函数 js-函数定义方法

    1.任何函数都是有返回值的,没有返回值的,在某些语言里称之为过程例如PL/SQL 2.js中的函数如果没有return 关键字指明给出的返回值,那么当调用完函数后,会返回“undefined" ...

  9. js 匿名函数-立即调用的函数表达式

    先提个问题, 单独写匿名函数为什么报错?return 匿名函数 为什么不报错? 如图: 第二种情况在 f 还没有执行的时候,就报错了,,,当然这得归因于函数声明语句声明提前(发生在代码执行之前)的原因 ...

随机推荐

  1. 前端性能优化-Cookie

    什么是Cookie Cookie可以理解成为浏览器内部存储数据的一个数据库,并会随请求一起被发送:Cookie以键-值对的形式存在.可以存储网站的一些数据,这部分数据不会随着浏览器关闭而被清除.如下图 ...

  2. Container&injection(容器与注入思想)

    container 为了更好理解JAVA容器,查询了容器的概念以及容器的诞生原因和历史: 容器技术是怎么一个概念呢?其实,IT里的容器技术是英文单词Linux Container的直译.contain ...

  3. intellijidea课程 intellijidea神器使用技巧 5-2 localhistory

    Ctrl shift A  ==>localhistory ==> show history 查看文件本地历史记录(idea每次修改在本地会生成历史记录) Ctrl shift A  == ...

  4. Python数据报协议以及sockersever模块的使用

    一.基于UDP协议的套接字 UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式 ...

  5. 解决圆角bitmap保存时背景为黑色

    1.cropBitmap.copy(Bitmap.Config.ARGB_8888, true);cropBitmap.compress(Bitmap.CompressFormat.PNG, 100, ...

  6. Angular2、4入门基础知识(小的概念)

    1. 使用引用符来格式化HTML代码. @Component({ selector: 'app-heroes', templateUrl: './heroes.component.html', sty ...

  7. mysql一些常用的查询语句总结

    工作中会遇到一些比较有用的mysql查询语句,有了它,可以对mysql进行更全面的维护和管理,下面就写一下我记录的 1.按照字段ru_id查询dsc_order_goods表中ru_id出现次数由多到 ...

  8. 如何查看某个用户指定时间段的ABAP开发记录

    输入用户名和想查询的时间段: 执行得到结果.双击可查看具体代码: 工具源代码: REPORT tool_dev_history. PARAMETERS: name TYPE usr02-bname O ...

  9. 使用ABAP Push Channel(APC)开发的乒乓球游戏,可双打

    url: https://:/sap/bc/apc_test/ping_pong/game 或者事务码SICF, 输入ping_pong, 按F8: 选中搜索结果,点右键选择Test,即可打开url. ...

  10. 基数排序C#界面版

    第一步:生成数据  第二步:读取数据 第三步:创建队列 第四步:入队分配 第五步:出队收集重复第四步与第五步,直到出队入队各四次,完成基数排序:如下:4次入队结束后如下:最后一次出队:基数排序完成.. ...