请详细解释JavaScript中的闭包概念，并以字符串的形式给出解释，格式需要是一个对象，该对象包含三个属性：definition、example、advantages，每个属性都是一个字符串，要求每个字符串不超过100个字符。
user
{
  "definition": "闭包是函数与其词法环境的组合，函数可以访问其外部函数的变量。",
  "example": "function outer() { let x = 10; return function inner() { console.log(x); } }",
  "advantages": "保护变量隐私，实现数据持久化，支持函数编程特性，简化代码结构。"
}
assistant