javascript里的闭包是什么?应用场景有哪些