我确定我不知道传递了什么样的变量。我的印象是,当我调用函数置换时(' abc'),我将一个字符串传递给函数。但是当我尝试使用.split方法时,它会给我一个错误.split不是一个函数。所以我通过使用Array.prototype.slice.call(str)解决了它,但问题仍然存在.split不是一个选项。我的代码如下:
function permutation(str, n) {
array = Array.prototype.slice.call(str); // why not array = str.split('');
n = n || array.length;
if (n == 1) {
console.log(array.join(''));
return array.join('');
} else {
for (var i=0; i<n;i++) {
permutation(array, n-1);
if (n%2 == 0) {
swap(array,i,n-1);
}
else {
swap(array,0,n-1);
}
}
}
}
function swap(array, i, j) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
return array;
}
permutation('abc');