问题一:定义了两个键值对,可以理解成给aaa函数定义了两个属性,属性名分别为b、c,属性值分别为bbb、ccc。
问题二:函数分两种:一种是功能性函数,另外一种是带有返回值的函数。你可以区分一下这两种函数就懂了、
问题三:没必要非得赋值,直接aa()()也可以。
大神,我最后废话一下,var c = aa(); c();跟直接aa()()执行效果一样,是为什么,还有功能性函数我大致明白一般是function test(){ }这样的,那那个有返回值的是不是指闭包,函数嵌套函数的函数,是吗大神
aa()只是对外层函数的调用 而调用aa返回了bb函数没错,但是bb函数并未被调用。所以想要弹出必须调用bb,那自然就需要再加()实现了。
@model-zachary: var c = aa()这一句执行过后,c与aa()等价,就是说c与aa()一模一样,那c()跟aa()()自然也等价了。
功能性函数是指执行了一些计算、弹出、打印等功能的函数,有返回值的函数不一定是闭包,但是闭包一定由返回值的哦,
@芳格: en,哪还有一点就是他为什么不能像正常函数那样调用,而是要这样先赋值或者aa()()这样的调用呢?正常的函数不是function aa(){ alert("test") } aa();就可以了 他为什么会多一道程序
是不是那个就是自动执行函数,起到的就是那个作用?对吗、像这样(function(){ })()
@model-zachary: 这是匿名函数的自调用
@model-zachary: 你所谓的平常的函数没有嵌套另一个函数,而这里属于两个函数,两个函数自然要有两次调用。
@芳格: 两个函数自然要有两次调用,一语道破,通俗易懂,谢谢
少年,去买本书《javascript高级程序设计》看看吧,这些问题是基础的不能再基础的问题了。
我有红皮书,但没怎么看,这是哪里有讲到的
额,感觉好凌乱,我觉得是作用域理解的问题吧