函数的可靠性
http://bbs.51js.com/viewthread.php?tid=86342&pid=602059&page=1&extra=page%3D1#pid602059
要设计一个优秀的函数,基本的原则之一是这个函数的表现要可靠,有时候我们不经意间为了实现一个特性而违背了函数的可靠性,给使用者留下了“坑”,这是不应该的
- function test(){
- var x = 1;
- test = function(){
- return x++;
- }
- return test();
- }
这个函数之所以这么写,作者是想在函数中利用闭包特性定义一个局部静态变量,但是,这个函数是有问题的
- function test(){
- var x = 1;
- test = function(){
- return x++;
- }
- return test();
- }
- var test2 = test; //中招
- alert(test2());alert(test2());alert(test2()); //错了
所以,必须要消除这种“坑“,改用下面的写法:
- var test = (function(){
- var x = 1;
- return function() {
- alert(x);
- x ++;
- }
- })();
最后,总结一下定义带有局部静态作用域的函数范式
- var myFunc = (function(){
- var localVariable = "someValue";
- return function(args...){
- //function body
- }
- })();
还没有用过这样的写法,原来这是个坑呀.