var data = (function (i) {
return function () {
alert((i *= 2));
};
})(2);
data(5); //弹出’4’
var a = 0,
b = 0;
function A(a) {
A = function (b) {
alert(a + b++);
};
alert(a++);
}
A(1); // ‘1’
A(2); // ‘4’
实现一个中间件 洋葱圈模型
function compose(middlewares) {
return function () {
return dispatch(0)
function dispatch(i) {
let fn = middlewares[i]
if (!fn) {
return Promise.resolve()
}
return Promise.resolve(
fn(function next() {
return dispatch(i + 1)
})
)
}
}
}
-
多个if/else 如何优化 - > map,Object 策略模式
策略模式例子 -
禁用浏览器缓存:
Get换成Post
请求加上时间戳或者随机数 -
闭包就是能够读取其他函数内部变量的函数。
特点:
( 1 ) 闭包外层是一个函数。
( 3 ) 闭包会return内部函数。
( 4 ) 闭包返回的函数内部不能有return
( 5 ) 执行闭包后,闭包内部变量会存在,而闭包内部函数的内部变量不会存在。优点:
( 1 ) 可以有私变量的存在;
( 2 ) 避免全局变量的污染;
( 3 ) 希望一个变量长期驻扎在内存中,防止私有变量被垃圾回收机制所清除;缺点: 闭包比普通函数占用更多的内存,会造成内存泄漏;在不使用时,要及时释放,将引用内层函数对象的变量赋值为null。
[] 转为字符串是 ""
[] 转为数字是 0
[] 转为布尔值是 true
false转为数字是 0
true转为数字是 1