JS中超越现实的匿名函数用法实例分析


Posted in Javascript onJune 21, 2019

本文实例讲述了JS中超越现实的匿名函数用法。分享给大家供大家参考,具体如下:

一般函数:

function show1(name){
    alert(name); //打印:zhangsan
  }
show1("zhangsan");

匿名函数:

var show2 = function (name) {
    alert(name); //打印:张三
  }
show2("张三");

上面2种定义函数的区别:

1.我们知道所有的function都会在window对象里

function show1(name){
    alert(name); //打印:张三
  }
  window.show1("张三");

即使在函数定义之前调用

window.show1("张三");
  function show1(name){
    alert(name); //打印:张三
  }

这是因为这种”有名字”的函数在JS引擎初始化的时候就加载到作用域里面

2.如果是匿名函数

window.show2("李四");
  var show2 = function (name) {
    alert(name); //打印:李四
  }

控制台会打印:TypeError: window.show2 is not a function

二、如果我们需要合并上面2个函数

<script>
  function show(name) {
    return function () {
      alert(name); //内部函数是可以调用外层的变量的
    }
  }
  show("王五");
</script>

猜猜会打印什么?什么也没有,也不会报错。这是因为执行show()只是返回了一个函数本身,并没有执行这个函数。

show("王五")();

这样执行,就打印:王五

如果里面的函数也要传入变量

<script>
  function show(name) {
    return function (age) {
      alert(name); //打印:王五
      alert(age); //打印:18
    }
  }
  show("王五")(18);
</script>
<script>
  function show(name) {
    return function (name) {
      alert(name);
    }
  }
  show("王五")(18);
</script>

猜猜是打印“王五”还是“18”?只会打印“18”。

三、匿名函数的自执行

<script>
  (function (name) {
    alert(name);  //打印:哈哈
  })("哈哈")
</script>

以上是推荐的写法。

其他写法:

-function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")
+function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")
!function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")
[function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")]
new function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")
~function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")
void function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
再谈ie和firefox下的document.all属性
Oct 21 Javascript
Firebug入门指南(Firefox浏览器)
Aug 21 Javascript
Backbone.js中的集合详解
Jan 14 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
May 26 Javascript
js控住DOM实现发布微博效果
Aug 30 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
Aug 07 Javascript
ES6 迭代器与可迭代对象的实现
Feb 11 Javascript
在element-ui的select下拉框加上滚动加载
Apr 18 Javascript
微信小程序中如何计算距离某个节日还有多少天
Jul 15 Javascript
js简单实现自动生成表格功能示例
Jun 02 Javascript
js异步接口并发数量控制的方法示例
Nov 22 Javascript
原生js实现自定义滚动条组件
Jan 20 Javascript
微信小程序实现圆形进度条动画
Nov 18 #Javascript
JavaScript迭代器的含义及用法
Jun 21 #Javascript
js事件触发操作实例分析
Jun 21 #Javascript
微信小程序实现下拉刷新动画
Jun 21 #Javascript
vue elementUI使用tabs与导航栏联动
Jun 21 #Javascript
Ajax请求时无法重定向的问题解决代码详解
Jun 21 #Javascript
vue配置文件实现代理v2版本的方法
Jun 21 #Javascript
You might like
一个简单的PHP投票程序源码
2007/03/11 PHP
js传值 判断
2006/10/26 Javascript
学习YUI.Ext 第七天--关于View&amp;JSONView
2007/03/10 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
jquery 设置style:display的方法
2015/01/29 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
python实现决策树分类算法
2017/12/21 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
python中return不返回值的问题解析
2020/07/22 Python
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
机修工岗位职责
2013/11/24 职场文书
实习生自我鉴定范文
2013/12/05 职场文书
公司开业庆典主持词
2014/03/21 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python
MongoDB使用场景总结
2022/02/24 MongoDB