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 相关文章推荐
jQuery下的动画处理总结
Oct 10 Javascript
JavaScript常用的弹出广告及背投广告实现方法
Feb 06 Javascript
jQuery插件slides实现无缝轮播图特效
Apr 17 Javascript
jQuery实现模拟flash头像裁切上传功能示例
Dec 11 Javascript
JS查找英文文章中出现频率最高的单词
Mar 20 Javascript
js实现适配不同的屏幕大小
Apr 10 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
May 10 Javascript
微信小程序和H5页面间相互跳转代码实例
Sep 19 Javascript
利用JS代码自动删除稿件的普通弹幕功能
Sep 20 Javascript
vue.js实现三级菜单效果
Oct 19 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
Oct 27 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
Nov 11 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
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
php class类的用法详细总结
2013/10/17 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
基于jQuery实现Accordion手风琴自定义插件
2020/10/13 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
angular 服务随记小结
2019/05/06 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
python使用socket进行简单网络连接的方法
2015/04/29 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
Python 忽略warning的输出方法
2018/10/18 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
聚美优品励志广告词
2014/03/14 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
小学班级口号
2014/06/09 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
python flask开发的简单基金查询工具
2021/06/02 Python
python计算列表元素与乘积详情
2022/08/05 Python