js 把一个函数赋给一个变量时带括号与不带括号的区别
来源:互联网 发布:foobar2000音质优化版 编辑:程序博客网 时间:2024/05/17 02:37
function hi(){ var a = 1; return function(){ console.log(a++); }; }; var aaa = hi();var bbb = hi;aaa();aaa();bbb();
这段代码中 aaa与bbb的区别是什么?
*****************************************************************************************************************************************************************************************
aaa
是将 hi()
的运行结果赋值给它,即 return
返回的匿名函数,此时有一个闭包,则每次调用 aaa
时都访问的同一个 a
,aaa()
第一次运行结果为 1
,第二次为2
而 bbb
将是将 hi
这个函数名赋值给它,则调用 bbb()
后返回一个函数表达式,即function(){console.log(a++)};
- 2014年10月21日回答 · 2014年10月21日更新
- 评论
bbb
就是hi
本身,换句话说就是外层的function。bbb()
的结果应该跟hi()
的结果一样。
aaa
是hi()
调用之后返回的那个东西,也就是说它是里层的function,a
是它闭包里面的一个对象。aaa()
的调用结果是console.log(a++)
。
- 2014年10月21日回答
- 评论
hi()是将hi函数运行之后返回 function(){console.log(a++)}
,这种返回值是函数的方法叫做函数式编程,楼主可以查找下相关的资料看看。
aaa 的值是 function(){console.log(a++)}
,而aaa再次运行的话就会打印出来a的值,这个地方可以看下上面那个hi函数,其中包含一个闭包,也就是说hi函数返回的function(){console.log(a++)}
这个函数会一直保持着对引用,也就是说每调用一次 aaa ,那么打印的值都会加上1,关于具体的闭包,楼主还是可以自己查查资料
bbb 的值就是hi函数,这是一个普通的赋值操作
- js 把一个函数赋给一个变量时带括号与不带括号的区别
- js 把一个函数赋给一个变量时带括号与不带括号的区别
- JavaScript-js中把一个函数赋给一个对象时带不带括号的区别?
- JS函数中带与不带括号的区别
- js里调用函数时,函数名带括号和不带括号的区别
- js里调用函数时,函数名带括号和不带括号的区别
- 学习笔记:js里调用函数时,函数名带括号与不带括号的区别
- new带括号与不带括号的区别
- [转载]new带括号与不带括号的区别
- new带括号与不带括号的区别
- JavaScript 函数调用时带括号和不带括号的区别!!!
- JavaScript 函数调用时带括号和不带括号的区别
- JavaScript 函数调用时带括号和不带括号的区别
- 关于创建对象时带括号与不带括号的区别
- js中给函数传参函数时,函数加括号与不加括号的区别
- js中function的带括号和不带括号的区别
- javascript中函数调用带括号和不带括号的区别
- 类的实例化带括号与不带括号的区别
- Bug预防学习笔记(web常见问题)
- 【SourceTree+Coding】使用SourceTree将代码提交到Coding
- 别装了,你根本就不想变成更好的人
- 对request,session,application作用域形象理解
- Some questions about RT-preempt
- js 把一个函数赋给一个变量时带括号与不带括号的区别
- jstack对线程信息的分析
- A - Theatre Square
- 使用MERGE命令同步数据
- 我所理解的Cocos2d-x Cocos2d-x 内存管理机制
- 简述Java命令行参数、JVM、打包Java程序、JAR文件
- 筛法求素数
- 【理解JVM】 深入分析Java ClassLoader原理
- cannot open shared object file: No such file or director解决方案