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 相关文章推荐
网页中实现浏览器的最大,最小化和关闭按钮
Mar 12 Javascript
jquery each()源代码
Feb 14 Javascript
在js文件中如何获取basePath处理js路径问题
Jul 10 Javascript
JS替换文本域内的回车示例
Feb 18 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
Sep 29 Javascript
详解VueJs异步动态加载块
Mar 09 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
Aug 24 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
Feb 22 Javascript
在Vue项目中使用d3.js的实例代码
May 01 Javascript
微信小程序设置滚动条过程详解
Jul 25 Javascript
原生JavaScript创建不可变对象的方法简单示例
May 07 Javascript
vue实现在线学生录入系统
May 30 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
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
php中长文章分页显示实现代码
2012/09/29 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
2015/03/05 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
微信小程序实现打卡日历功能
2020/09/21 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
Python查看多台服务器进程的脚本分享
2014/06/11 Python
Python3.2中的字符串函数学习总结
2015/04/23 Python
python实现SMTP邮件发送功能
2020/06/16 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
python批量处理txt文件的实例代码
2020/01/13 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
2012/06/02 面试题
教师个人自我剖析材料
2014/09/29 职场文书
大学生创业事迹材料
2014/12/30 职场文书
学校端午节活动总结
2015/02/11 职场文书
廉政党课工作报告案例
2019/06/21 职场文书
2019年冬至:天冷暖人心的问候祝福语大全
2019/12/20 职场文书
java Nio使用NioSocket客户端与服务端交互实现方式
2021/06/15 Java/Android
react 路由Link配置详解
2021/11/11 Javascript