function a(){
alert('A');
a = function(){
alert('B');
};
}
function a(){
alert('A');
return function(){
alert('B');
};
}
该函数在第一次被调用后重写自己,从而避免了每次调用时重复一些不必要的的操作。这个具体怎么理解呢?重写函数前后函数执行线程不是一样吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
举个例子,不同浏览器有的API的名称是不一样的,然后你要封装一个统一的接口,那你的代码就差不多是这样
在不使用额外变量的情况下,不使用if-else的情况下,区分了一个布尔型的状态。
比如有些行为,在初始化和未初始化的情况下逻辑不一样,那么可以这么写:
这里很糟糕的,引入了全局变量,那可以将这个变量封装在成一个内部状态,可以这么写:
如果使用题主说的方法的话:
另外,这样的写法感觉很函数式(个人对函数式了解不多,不敢绝对)。那么这里就是编程范式的问题了。
感受一下下面三种不同的写法:
面向过程:
面向对象:
函数式:
那函数式的方法,是有很多自己的优点的,这个你要去了解函数式编程。
楼上那个浏览器API的例子是个很好的例子,总的来说,函数重写更多的是为了规避某些不必要的操作,从而达到优化代码性能的目的, 我再给你举个更常用的:
简单来说
第一次运行a函数时执行的是alert('A'),第二次执行的是alert('B')。
与其说是避免重复不必要的操作,不如说是做了另外的操作。第一次运行时干了A这件事,后面运行时干的都是B这件事。