javascript - 从数组中删除一个元素,然后在不使用全局变量的情况下保留其状态以备将来使用

标签 javascript arrays element state

假设我有一个定义如下的数组:

var str = ['H', 'e', 'l', 'l', 'o'];

我有一个按钮,当用户点击它时,应该删除字符串的第一个元素并在删除后返回结果数组(即 ['e', 'l', 'l', ' o']).结果数组也应该保存,下次按下按钮时,数组中的下一个元素将被删除(即结果数组将是 ['l', 'l', 'o']) 等等,直到删除所有元素。

如果数组是全局的,这就非常简单了:

var str = ['H', 'e', 'l', 'l', 'o'];

function remove_first(the_array) {
    the_array.shift();
    return the_array;
}

del.onclick = function() {
    result = remove_first(str);
}

但我想在不使数组成为全局数组的情况下执行此操作。你会怎么做?

最佳答案

您必须在事件处理程序之外定义数组,因为它必须在事件处理程序的调用之间持续存在。

但是您不必在全局范围内定义数组或函数来使它工作,任何共享范围都可以。所以你可以使用 IIFE创建新范围:

(function() {

    var str = ['H', 'e', 'l', 'l', 'o'];

    function remove_first(the_array) {
        the_array.shift();
        return the_array;
    }

    del.onclick = function() {
        var result = remove_first(str); // don't forget `var` here
    }

}());

关于javascript - 从数组中删除一个元素,然后在不使用全局变量的情况下保留其状态以备将来使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20370248/

相关文章:

java - 如何在 Java 中使用 DOM 获取目标命名空间及其前缀?

javascript - 谷歌标签管理器被多次加载

javascript - 如何使用 JavaScript 更改和移动图像

stdClass 的 PHP 数组,如何获取数据?

sql - Json数组列拆分成行SQL

php - 使用简单的 JSON 数组制作 Doctrine 查询结果

python - 针对一组元音测试字符串 - Python

javascript - 只允许一个div选择jquery类

javascript - 无法识别的表达式 : unsupported pseudo: hidden

list - 有没有办法在 PROLOG 中只选择列表的第一个和最后一个元素?