一道面试题,这个要怎么做?
![]() | 1 ChefIsAwesome 2015-08-17 21:17:45 +08:00 via Android 闭包。写个会返回另外一个函数的函数就完事了 |
2 aivier 2015-08-17 21:19:31 +08:00 如果没有 Cookie 和 LocalStorage ,也没有 HTML ,还不能和服务器通讯 ....我想不出来 |
![]() | 3 est 2015-08-17 21:21:36 +08:00 函数也算全局变量? |
![]() | 4 magicdawn 2015-08-17 21:24:08 +08:00 function count (){ console.log (++count.count ); } count.count = 0; 函数也是可以带属性的,闭包就不说了 |
5 Gonster 2015-08-17 21:24:26 +08:00 via iPhone var count = (function (){ var i = 0; return function (){console.log (++i )} })(); |
![]() | 6 yangg 2015-08-17 21:35:50 +08:00 console.count (); |
![]() | 7 ChefIsAwesome 2015-08-17 21:50:34 +08:00 via Android 稍微扩展一下。 jQuery 的$是什么,$.ajax 是什么,$.fn 又是什么。 js 基本原理就这些东西了 |
![]() | 8 zhuangzhuang1988 2015-08-18 08:55:28 +08:00 简单,定义类啊 |
![]() | 9 an168bang521 2015-08-18 14:57:22 +08:00 哥们,这题应该是考查对闭包内的变量控制的; 可以下面这么写的, <script> function test (){ var i=1; return function (){ console.log ("这是您第 "+(i++)+" 次调用 count ()") }; } count=test (); count (); count (); count (); count (); count (); count (); </script> 这个在写 JS 时候很常用的; 还有 4 楼说的添加自定义属性也经常用的,尤其的做定时器 /动画的时候; |
![]() | 10 an168bang521 2015-08-18 15:08:07 +08:00 闭包和给函数添加自定义属性都可以; 但是给函数添加自定义属性,在性能上会更好; 因为这里用闭包实现的话。产生的作用域不销毁; 性能不如下面这种添加自定义属性的好 function count2 (){ console.log ("这是您第 "+(++count2.count )+" 次调用 count2 ()"); } count2.count = 0; count2 (); count2 (); count2 (); count2 (); count2 (); count2 (); 这种实现方法比闭包,在性能上好些; |