javascript - Array.prototype.map() 的callback如何使用调用map的函数的变量?
巴扎黑
巴扎黑 2017-04-11 13:18:53
[JavaScript讨论组]
function a(count) {
  return [1,2,3].map(val => val + count);
}

function b(count) {
  return [1,2,3].map(fn);
}

function fn(val) {
  return val + count;
}

console.log('a' + a(9));
console.log('b' + b(9));

Function a中,map的callback使用arrow function直接定义在function a中,那么map的callback是可以使用count变量的。

如果我想复用map的callback函数,如function b,那么这个callback如何取得count的值呢? 如上面的代码,会抛出ReferenceError: count is not defined 错误。

巴扎黑
巴扎黑

全部回复(3)
天蓬老师
function fn(count) {
    return function(val) {
        return count + val;
    }
}

function a(count) {
    var cb = fn(count);
    return [1, 2, 3].map(cb);
}
黄舟
function a(count) {
    return [1,2,3].map(val => val + count);
}

function b(count) {
    return [1,2,3].map(fn, count);
}

function fn(val) {
    return val + this;
}

console.log('a' + a(9));
console.log('b' + b(9));
迷茫

这是一个作用域延伸的问题,javascript的变量作用域是可以延伸到其他函数内,但是这个函数一定要在其作用域里面定义。比如:

function a(val){
    function b(){
        console.log(val)
    }
    b();
}

这是可以访问的。如果b函数定义在外面:

function a(val){        
    b();
}
function b(){
    console.log(val)
}

这是不行的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号