javascript 匿名函数_匿名函数lambda

javascript 匿名函数_匿名函数lambda你必须知道的JavaScript匿名函数以及多种匿名函数的写法,本文还将详解为什么匿名函数会自动执行,这也是Jquery库的原理哦~~~

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用
匿名函数没有实际名字,也没有指针,怎么执行滴? 
其实大家可以看看小括号的意义就应该可以理解。小括号有返回值,也就是小括号内的函数或者表达式的返回值,所以说小括号内的function返回值等于小括号的返回值,不难理解 (function(){})()可以将没有名字的函数执行了把… 
关于匿名函数写法,很发散~ 
最常见的用法: 

代码如下:

(function() { 
alert(‘water’); 
})(); 


当然也可以带参数: 

代码如下:

(function(o) { 
alert(o); 
})(‘water’); 


想用匿名函数的链式调用?很简单: 

代码如下:

(function(o) { 
alert(o); 
return arguments.callee; 
})(‘water’)(‘down’); 


常见的匿名函数都知道了,看看不常见的: 

代码如下:

~(function(){ 
alert(‘water’); 
})();//写法有点酷~ 


代码如下:

void function(){ 
alert(‘water’); 
}();//据说效率最高~ 
这里补充一下为什么加void效率会比较高
这是因为加void就相当于定义了该函数的原型,搜索该函数的时候就可以直接找到,不用大面积搜索,因此会比较快!这是我在群里问得到的解析,加上自己的理解,欢迎不同见解!


代码如下:

+function(){ 
alert(‘water’); 
}(); 


代码如下:

-function(){ 
alert(‘water’); 
}(); 


代码如下:

~function(){ 
alert(‘water’); 
}(); 


代码如下:

!function(){ 
alert(‘water’); 
}(); 


代码如下:

(function(){ 
alert(‘water’); 
}());//有点强制执行的味道~ 



那为什么加上这些符号呢?
弄清这个问题需要弄清函数表达式(function expression)和函数声明(function declaration)的区别:


函数表达式:

/* 函数表达式中的函数可以为匿名函数,也可以有函数名,但是该函数实际上不能直接使用,只能通过表达式左边的变量 a 来调用。*/

var a = function(){

alert(‘Function expression’);

}

var b = new a();

函数声明:

// 函数声明时必须有函数名

function a(){

alert(‘Function declaration’);

}

a();

而这段代码:

<script> 


~function() { 
alert(“hello, world.”); 
}
 
()

</script>

实际上可以分为两个部分(黑体部分和斜体部分)。黑体部分的匿名函数通过一元操作符变成了函数表达式,因而可以通过 () 来调用。




因此,执行匿名函数可以通过+,-,!,() 这样的形式来转化为函数表达式,就可以通过()来运行了。




匿名函数的好处在于:可以减少局部变量,以免污染现有的运行环境。jQuery等库都用到了这样的原理。


另外:通过+,-,!这三个符号运行的匿名函数比()运行的匿名函数可以减少一个字符的使用。

所以那些匿名函数附近使用括号或一些一元运算符的惯用法,就是来引导解析器,指明运算符附近是一个表达式。
按照这个理解,可以举出五类,超过十几种的让匿名函数表达式立即调用的写法

( function() {}() );
( function() {} )();
[ function() {}() ];

~ function() {}();
! function() {}();
+ function() {}();
- function() {}();

delete function() {}();
typeof function() {}();
void function() {}();
new function() {}();
new function() {};

var f = function() {}();

1, function() {}();
1 ^ function() {}();
1 > function() {}();
// ...

本文到此结束!


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186439.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Enterprise Library5.0 配置Log时差问题

    Enterprise Library5.0 配置Log时差问题最近使用EnterpriseLibrary5.0配置Log日志时候出现的默认时间与本地系统时间不一致。默认时间为格里尼治时间,在一个log中出现两个时间会让人迷惑,这个事件到底是什么时候发生的呢?经过小弟我一上午多次尝试后,总算是解决了这个问题。解决方法:在LogMessageFormatters->Template->将Timestamp:{timestamp}{newline}

    2022年10月20日
    0
  • 大数据采集平台之ZDH_SERVER部署

    大数据采集平台之ZDH_SERVER部署目录项目源码下载源码打包部署运行项目源码数据采集平台管理端https://github.com/zhaoyachao/zdh_web数据采集平台服务https://github.com/zhaoyachao/zdh_serverweb端在线查看http://zycblog.cn:8081/login用户名:zyc密码:123456界面只是为了参考功能,底层的数据采集服务需要自己下载zdh_server部署,服务器资源有限,请手下留情如.

    2022年6月10日
    50
  • pycharm怎么创建虚拟环境_pycharm选择运行环境

    pycharm怎么创建虚拟环境_pycharm选择运行环境配置虚拟环境的必要性1、保持项目的独立性。为每一个项目建立一个独立的运行环境,不与其他项目之间产生环境冲突。(比如其他项目加载或删除依赖环境软件时,互不影响)通俗一点就是,每人一个单间,大家在自己的房间内可以各干各的。2、提升项目开机加载速度。在独立性的前提下,虚拟环境可以选择继承已有的公共环境中的依赖包,也可以完全新建一个空间,也可以将自己的依赖环境共享给其他项目。总之,保证每个项目的虚…

    2022年8月28日
    0
  • 图的五种最短路径算法

    图的五种最短路径算法本文总结了图的几种最短路径算法的实现:深度或广度优先搜索算法,费罗伊德算法,迪杰斯特拉算法,Bellman-Ford算法。1)深度或广度优先搜索算法(解决单源最短路径)从起点开始访问所有深度遍历路径或广度优先路径,则到达终点节点的路径有多条,取其中路径权值最短的一条则为最短路径。下面是核心代码:voiddfs(intcur,intdst){if(minpath&lt;dst)r…

    2022年6月4日
    45
  • 四个好看的CSS样式表格

    四个好看的CSS样式表格

    2021年11月14日
    83
  • python3.9多线程_python多线程原理

    python3.9多线程_python多线程原理什么是线程?线程也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位。线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其

    2022年8月6日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号