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 相关文章推荐
jq选项卡鼠标延迟的插件实例
May 13 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
Feb 27 Javascript
js实现Select列表内容自动滚动效果代码
Aug 20 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
Dec 25 Javascript
JS表单验证的代码(常用)
Apr 08 Javascript
Bootstrap在线电子商务网站实战项目5
Oct 14 Javascript
jQuery插件ajaxFileUpload使用实例解析
Oct 19 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
Dec 24 Javascript
详解node.js 下载图片的 2 种方式
Mar 02 Javascript
webpack开发环境和生产环境的深入理解
Nov 08 Javascript
Vue注册组件命名时不能用大写的原因浅析
Apr 25 Javascript
Openlayers+EasyUI Tree动态实现图层控制
Sep 28 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的FTP学习(三)
2006/10/09 PHP
php str_replace的替换漏洞
2008/03/15 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
利用js编写响应式侧边栏
2016/09/17 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
使用Python写CUDA程序的方法
2017/03/27 Python
Python使用python-docx读写word文档
2019/08/26 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
python计算二维矩形IOU实例
2020/01/18 Python
Python绘制动态水球图过程详解
2020/06/03 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
波兰办公用品和学校用品在线商店:Dlabiura24.pl
2020/11/18 全球购物
精选干货:Java精选笔试题附答案
2014/01/18 面试题
医院合作协议书
2014/08/19 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
会计求职自荐信范文
2015/03/04 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
养成教育主题班会
2015/08/13 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python