javascript - 关于函数return的值的问题

查看:105
本文介绍了javascript - 关于函数return的值的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

function arrchange(arr){
    var btn = document.getElementById("button");
    btn.onclick = function(){
        arr = [1,2,3];
    }
    return arr;
}

function runCode(){
    var arr = [];
    var myArr = arrchange(arr);
    console.log(myArr);
}

runCode();


console.log显示空数组[]。
我想实现一个效果:
把一个空数组arr传入arrchange()函数;
再将arrchange(arr)赋值给一个变量myArr;
btn.onclick的时候,arrchange(arr)对arr进行处理,返回新的arr。
不然就不处理,返回原有的arr。
--
当然实际应用中arr会动态创建,所以没办法直接赋值,只能抽象化。
该怎么写呢?
其实问题就是怎么把函数当成一个值来返回,但是要再其中添加一个click功能,也许用闭包可以解决?

解决方案

我改了一些代码,可以看到按钮点击后myArr的值改变了

var logger = document.getElementById("log");
function arrchange(arr){
    var btn = document.getElementById("button");
    btn.onclick = function(){
        arr.push(1);
        arr.push(2);
        arr.push(3);
        logger.value = "button clicked "+arr+"\n"+logger.value;
    }
    return arr;
}

function runCode(){
    var arr = [];
    var myArr = arrchange(arr);
    setInterval(function(){
        logger.value=myArr.toString()+"\n"+logger.value;
    }, 2000);
}

runCode();

<button id="button">
click me to set array
</button>
<textarea id="log"></textarea>

这个需求很奇怪,如果描述清楚一些的话应该会有更好的思路,而不是像现在这样的解决方法。
我猜,如果你是想那个arrchange方法中断当前代码,而直到按钮点击后再继续运行后续的话,可以考虑Promise

这篇关于javascript - 关于函数return的值的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆