JavaScript闭包

来源:互联网 发布:网络简介阅读答案 编辑:程序博客网 时间:2024/06/15 13:08

闭包就是一个外部函数,可以直接引用内部函数中的变量.

简单概念

function log(){    let name = 'Chengyu'    function tell(lover){        return `${name} love ${lover}`    }    return tell('JingJing')}console.log(log()) // Chengyu love JingJing//JavaScript允许你使用当前函数外定义的变量
function log(){    let name = 'Chengyu'    function tell(lover){        return `${name} love ${lover}`    }    return tell}let action = log()action('Wei')  // Chengyu love Weiaction('HY')  // Chengyu love HY// 即使外部函数已经返回,当前函数仍然可以引用在外部函数所定义的变量
function log(name){    function tell(lover){        return `${name} love ${lover}`    }    return tell}let action = log('Chengyu')action('Wei')  // Chengyu love Weiaction('HY')  // Chengyu love HY// 函数可以引用在其作用域内的任何变量,包括参数和外部函数变量

当然上面的那个函数我们就可以简写成这样了

function log(name){    return functin(lover){        return return `${name} love ${lover}`    }}

实际应用

// 封装axios,用于获取固定接口的common信息包import axios from 'axios'// 利用Promise获取同步的异步数据fDeferData (url) {return new Promise((resolve, reject) => {  axios.get(url).then(function (response) {    resolve(response.data.resultObject)  }).catch(function (err) {    reject.log(err)  })})},// 获取区域信息fGetCustSuppNameList () {return fDeferData('/common/domainList')}// 获取产品信息fGetCustSuppNameList () {return fDeferData('/common/productList')}

参考资料:MDN

原创粉丝点击