今天想写一个直接用JS替代JQ的delegate的方法,结果发现在闭包中出现了问题!
示例:
var x1 = function(){alert(11);}
(function(){alert(1);}())
求解为什么这段代码的输出是1,然后还会输出11?
var x1 = function(){alert(11);}
(function(){alert(1);})()
然后是这段代码,为什么输出是11?并且1不会输出?
var x1 = function(){alert(11);}
(function(){})
最后我尝试了下,发现这样也是一样的结果,最后终于发现,这种写法等同于
var x1 = function(){alert(11);}
()
那么问题来了,为什么会如此?两个括号中的function(){}呗忽视了?还是其他的原理,求高手解答!非常感谢
已采纳
(JS-匿名函数-闭包)求解一个问题,估计是作用域
- 写回答
- 好问题 提建议
- 追加酬金
- 关注问题
微信扫一扫
分享- 邀请回答
2条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
danielinbiti 2015-05-07 03:19最佳回答 专家已采纳var x1 = function(){alert(11);};加上分号,不是闭包的问题,是编译的时候如果不加分号,下一行又有小括号,优先于括号组合 (function(){alert(1);}()) === 如果没加分号,就变成了 function(){alert(11);}(function(){alert(1);}());,就变成function(){alert(11);}()和参数function(){alert(1);}() 其他的一样
采纳该答案 已采纳该答案 专家已采纳评论解决 无用打赏举报微信扫一扫
分享评论登录 后可回复...
查看更多回答(1条)
报告相同问题?
提交
相关推荐 更多相似问题
- 2015-05-07 03:00回答 2 已采纳 ``` var x1 = function(){alert(11);};加上分号,不是闭包的问题,是编译的时候如果不加分号,下一行又有小括号,优先于括号组合 (function(){al
- 2018-07-01 05:40回答 2 已采纳 this是一个对象, this.x 就是访问this对象的x属性。 console.log(x)中的x是变量,就是用 var x=10声明的变量
- 2014-08-05 01:10回答 1 已采纳 很简单,你要先明白这句底发生了什么。 [code="java"]object1.getNameFunc()()[/code] 这句可以简单的拆分成两步调用: [code="java"] v
- 2017-10-25 12:02GoToDinner的博客 函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途。匿名函数:就是没有函数名的函数。 函数的定义,大致可分为三种方式: 第一种:这也是最常规的一种 ? 1 2 3 ...
- 2018-08-27 22:15qq_25987491的博客 问题的解决办法涉及到 JavaScript 的闭包及匿名自执行函数,关于什么是闭包并不像知乎上各位大神的“通俗解释”那样难理解,看一篇方应行的JS中的闭包是什么?就足够了。接下来,详细说说我所遇到的问题及解决办法 ...
- 2018-06-15 20:20迷途无归的博客 python 的作用域 作用域也叫命名空间,是访问变量时查找变量名的范围空间python的四个作用域 LEGB 作用域 英文解释 英文简写局部作用域(函数内) Local(function) L外部嵌套函数作用域 Enclosing function ...
- 2018-04-08 06:22回答 4 已采纳 如果你经常使用某个变量A,那么你把它设为全局变量也没有问题。但是闭包是无处不在的,产生的局部变量很多,并且有些变量如for循环中的i变量等,你要把它们全部都弄成全局变量吗?到时候词法作用域的作用原理极
- 2017-03-11 01:53回答 1 已采纳 图1是执行匿名函数后直接设置行的背景色,然后将匿名函数的返回值,注意是返回值作为onmouseover的处理函数 你的匿名函数没有返回值,所以默认返回undefined作为onmouseover
- 2015-05-01 00:15回答 1 已采纳 To see why it won't compile it might be helpful to pull your innermost function out into an argume
- 2021-06-13 10:05十三木的博客 函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途。匿名函数:就是没有函数名的函数。函数的定义,大致可分为三种方式:第一种:这也是最常规的一种function double(x){return 2 * x;}第二种:...
- 2017-03-09 11:43chilan5591的博客 变量的作用域:全局变量和局部变量, 函数内部可以直接操作全局变量,但是函数外部不能操作函数内部的局部变量,同理, 函数内部的子函数拥有父函数的所有变量及方法,但是父函数不能使用子函数的变量和方法,函数...
- 2018-05-24 19:36薛跳跳的博客 前面的括号包含函数体,后面的括号就是给匿名函数传递参数并立即执行之匿名函数的作用是用于闭包和避免全局变量的污染以及函数名的冲突函数的定义,大致可分为三种方式:第一种:函数申明,这也是最常规的一种...
- 2018-07-28 17:07回答 3 已采纳 另外一种this容易被用错的情况是使用闭包。一定要记住,闭包使用this关键词无法访问外部函数的this变量。函数的this变量只能被自身访问,其内部变量不行 所以是undefined,没有输出
- 2016-03-16 14:57回答 1 已采纳 局部变量你的 clearInterval(timer);根本清的就不是上一次启动的计时器,而是空的计时器,所以移进移除就会有2个计时器,一个+100,一个-100,从而抖动 除非你等到动画结束
- 2016-10-31 11:38回答 5 已采纳 javascript是动态(或者动态类型)语言,this关键字在执行的时候才能确定是谁。所以this永远指向调用者,即对‘调用对象‘者的引用。第一部分通过代码:object.getNameFunc()
- 2021-02-04 17:11weixin_39604516的博客 函数以及函数式编程到目前为止,我们的Python 代码已经实现了小的分块。它们都适合处理微小任务,但是我们想...定义一个函数为了定义Python 函数,你可以依次输入def、函数名、带有函数参数的圆括号,最后紧跟一个...
- 2021-05-21 14:33YuLong~W的博客 递归计算1+2+3+...n递归输出斐波那契数列前20项作用域变量的作用域作用域链闭包函数预解析 函数 在编写代码时,可能会出现非常多的相同代码,或者功能类似的代码,这些代码可能需要大量重复使用,此时就可以使用...
- 2020-07-02 00:03四灵妖的博客 javascript自执行函数 函数的定义: 第一种:函数声明 alert(sum(1,2));...注意“=”右边的函数就是一个匿名函数,创造完毕函数后,又将该函数赋给了变量sum,sum的本质就是个函数。 匿名函数的创建:
- 2016-08-19 15:11回答 5 已采纳 I don't think if it is possible to create named functions out of closures on the fly but using __c
- 2021-06-14 14:49dongdongyayaya的博客 一、函数 1、什么是函数 假如我们要分别计算1到10、5到12、14到35的整数和。 2、函数的定义和调用 1.和变量类似,函数必须先定义然后才能使用。 使用function关键字定义函数, function是“功能”的意思。 2.函数的...
- 没有解决我的问题, 去提问