每日一文

柯里化/偏函数/变量提升/垃圾回收机制

2020-12-24  本文已影响0人  永恒即是最美

柯里化:fn(a,b,c) ==> fn(a)(b)(c)

function getAddress(province,city,area){  
  return province + city + area;  
} 
getAddress('浙江省','杭州市','西湖区');     //浙江省杭州市西湖区  
柯里化后:
function getAddress(province){  
 return function (city) {  
   return function (area) {  
     return province + city + area;  
   }  
 }  
}  
let city = getAddress('浙江省')('杭州市');  
city('西湖区');     //浙江省杭州市西湖区  
city('拱墅区');     //浙江省杭州市拱墅区  
city('上城区');     //浙江省杭州市上城区 

偏函数:fn(a,b,c) ==> fn(a,b)(c)

function getAddress(province,city){  
  return function (area) {  
    console.log(province + city + area);  
  }  
}  
let city = getAddress('浙江省','杭州市');  
city('西湖区');     //浙江省杭州市西湖区  
city('拱墅区');     //浙江省杭州市拱墅区  
city('上城区');     //浙江省杭州市上城区  

变量提升:

let和const不存在变量提升,而var存在。当一段代码块中存在let或者const时,从代码块开始就形成一个封闭作用域,称为暂时性死区。

垃圾回收机制:

1.引用计数法:定义一个变量,引用计数+1。当变量为null时,计数为零,被回收
2.标记清除法:为两个阶段,标记阶段和清除阶段:
(1)标记阶段:垃圾收集器会从根对象(Window对象)出发,扫描所有可以触及的对象,这就是所谓的可抵达
(2)清除阶段:在扫描的同时,根对象无法触及(不可抵达)的对象,就是被认为不被需要的对象,就会被当成垃圾清除

上一篇 下一篇

猜你喜欢

热点阅读