我有许多按钮,点击时会向一个数组添加一个单词。此数组用于URL名称以下载文件:
<button id="button9" onclick="myFunction7();"</button>
<script>
var a = [];
function myFunction7() {
a.push("h");
}
<button id="button10" onclick="myFunction8();"</button>
<script>
var b = [];
function myFunction8() {
b.push("h");
}
var url = [a,b,c,d];
(我刚刚包含了两个按钮,它们也以c,d存在,格式相同)
按钮功能正常,加载了正确的文件。有没有办法重置url变量并清空数组?我想有一个按钮来重置我的网页上的url变量,这样就可以创建一个新的数组。我创建了一个刷新整个页面的按钮,但这并不理想,因为每次我的网页都需要重新加载才能清除数组!
答案 0 :(得分:4)
要清除数组,只需将其重新声明为空数组url = []
var url = ['a', 'b', 'c', 'd'];
console.log(url) // added for example
function clearArray() {
return url = []
}
function getArray() {
return console.log(url)
}
&#13;
<button onclick="clearArray(); alert('Array cleared. Now click getArray() button')">Clear Array</button>
<button onclick="getArray()">Get Array</button> <!-- click me after clearing the array -->
&#13;
答案 1 :(得分:0)
关于这个问题,我有两个想法和概念。
概念1:
在 ES6(ECMAScript 2015)中,我们大多使用 const 关键字声明数组和对象。
const url = ['a','b','c','d'];
在这种情况下,如果我们直接尝试使用url=[]
清除数组,则会出现错误,看起来像这样。
script.js:96未捕获的TypeError:分配给常量变量。 在HTMLImageElement.flipcard(script.js:96)
我们可以用来清除数组内容的另一种方法是使用每个数组都可用的 pop()方法。
while(url.length>0){
url.pop();
}
概念2:
如果我们直接执行url=[]
,则基本上是将一个空数组分配给同一变量 url ,而旧数组['a','b','c','d']
则在中漫游内存堆,但没有指向它的任何引用变量。 由于数组是javascript中的对象,因此我们不认为在程序中使对象指向任何东西不是一种好习惯。因为这可能导致在我们的程序中称为内存泄漏的概念。
注意:通过在数组上使用 pop()方法,我们基本上是在更改同一数组url本身,而无需重新分配它,这样我们也就停止了< strong>内存泄漏。
以下是有关如何执行此操作的完整js程序:
var url = ['a', 'b', 'c', 'd'];
console.log(url) // added for example
function clearArray() {
while(url.length>0){
url.pop();
}
return url;
}
function getArray() {
return console.log(url)
}
console.log("clearArray function return back an empty array :",clearArray());