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 相关文章推荐
你需要知道的JavsScript可以做什么?
Jun 29 Javascript
JQuery从头学起第三讲
Jul 06 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
May 07 Javascript
DIV始终居中的js代码
Feb 17 Javascript
jQuery中unbind()方法用法实例
Jan 19 Javascript
JavaScript中Number对象的toFixed() 方法详解
Sep 02 Javascript
js中获取 table节点各tr及td的内容简单实例
Oct 14 Javascript
微信小程序开发教程之增加mixin扩展
Aug 09 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
Sep 13 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
Jun 19 Javascript
mock.js模拟数据实现前后端分离
Jul 24 Javascript
webpack+express实现文件精确缓存的示例代码
Jun 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
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
记录几个javascript有关的小细节
2007/04/02 Javascript
一些不错的js函数ajax
2008/08/20 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
php跨域调用json的例子
2013/11/13 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
vue全局组件与局部组件使用方法详解
2018/03/29 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
python实现视频读取和转化图片
2019/12/10 Python
python实现拼图小游戏
2020/02/22 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
法国珠宝店:CLEOR
2017/01/29 全球购物
自考毕业自我鉴定范文
2013/10/27 职场文书
财务会计人员求职的自我评价
2014/01/13 职场文书
新领导上任欢迎词
2014/01/13 职场文书
学习十八大的心得体会
2014/09/12 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
校运动会广播稿300字
2014/10/07 职场文书