假设我有一个定义如下的数组:
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/