我不会算原函数,帮忙解释下。

 我来答
nn8ov6
2019-09-03 · TA获得超过7586个赞
知道大有可为答主
回答量:5778
采纳率:61%
帮助的人:685万
展开全部
先解释一下这个语句:(foo.bar,foo.bar)()
(foo.bar,foo.bar) 整体作为表达式集合,返回最后一个表达式的结果,即(foo.bar,foo.bar)等价于 (foo.bar);而你这里两个表达式是一样的,没什么意义
所以,上面的语句可以写成这样(foo.bar)(),为什么会打印10,而不是打印9?
关键在于(foo.bar)的括号,根据上下文,foo.bar是个函数指针,所以你此处可以写成
(function(){
return this.o;
})(); //这里的this是window, 所以window.o自然是10喽
如果没有括号是什么样子呢,foo.bar(),这种情况下打印9,它表示调用foo对象的bar方法
所以,关键点是(foo.bar)的括号,这个括号改变了语义,即运算优先级
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式