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 相关文章推荐
Javascript调用XML制作连动下拉列表框
Jun 25 Javascript
DEFER怎么用?
Jul 01 Javascript
JS 常用校验函数
Mar 26 Javascript
javascript与CSS复习(三)
Jun 29 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
Mar 26 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
Nov 07 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
Jan 16 Javascript
Bootstrap table表格简单操作
Feb 07 Javascript
微信小程序 跳转传递数据的实例
Jul 06 Javascript
JavaScript截屏功能的实现代码
Jul 28 Javascript
bootstrap中selectpicker下拉框使用方法实例
Mar 22 Javascript
JavaScript实现连连看连线算法
Jan 05 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 4.2书写安全的脚本
2006/10/09 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
2017/11/21 PHP
PHP学习笔记之session
2018/05/06 PHP
测试你的JS的掌握程度的代码
2009/12/09 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
javascript制作坦克大战全纪录(2)
2014/11/27 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
Nodejs监听日志文件的变化的过程解析
2019/08/04 NodeJs
vue 如何使用递归组件
2020/10/23 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
python检测远程端口是否打开的方法
2015/03/14 Python
理解Python中函数的参数
2015/04/27 Python
python学生管理系统学习笔记
2019/03/19 Python
python输入错误后删除的方法
2019/10/12 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
美国内衣品牌:Leonisa
2016/08/14 全球购物
英国工具中心:UK Tool Centre
2017/07/10 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
Java语言程序设计测试题选择题部分
2014/04/03 面试题
室内设计专业学生的自我评价分享
2013/11/27 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
校车安全责任书
2014/08/25 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers