以下是重构后的答案:

JavaScript中清空数组的方法有以下几种:

1. 使用splice方法

```javascript

var ary = [1, 2, 3, 4];

ary.splice(0, ary.length);

console.log(ary); // 输出 [],空数组,即被清空了

```

这种方式会直接修改原数组。

2. 将length属性赋值为0

虽然在Java等其他语言中这种方式会报错,但在JavaScript中可以实现清空数组的目的。

```javascript

var ary = [1, 2, 3, 4];

ary.length = 0;

console.log(ary); // 输出 [],空数组,即被清空了

```

Prototype库中的clear方法和mootools库中的empty方法使用这种方式清空数组。

3. 将数组赋值为[](不保留原数组的其他属性)

```javascript

var ary = [1, 2, 3, 4];

ary = []; // 赋值为一个空数组以达到清空原数组

Ext库Ext.CompositeElementLite类的 clear 方法使用这种方式清空。

```

方式2保留了数组的其他属性,而方式3则没有。很多人认为方式2的效率较高,因为仅仅是给length重新赋值了,而方式3则需要重新创建对象。然而经过测试,实际上方式3的效率更高。

测试代码:

```javascript

var a = [];

for (var i = 0; i < 1000000; i++) {

a.push(i);

}

var start = new Date();

//a = [];

a.length = 0;

var end = new Date();

alert(end - start);

```

测试结果:

- IE6、IE7、IE8、IE9

- Firefox、Safari、Chrome

- a.length=0:94毫秒

- a=[]:0毫秒

从测试结果可以看出,方式3(将数组赋值为[])的效率更高。如果不保留原数组的其他属性,Ext采用的方式更值得推荐。