一道面试题,这个要怎么做?
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 (); 这种实现方法比闭包,在性能上好些; |