我的函数不返回任何内容
My function doesn't return anything
我已经在Heap的函数中插入了一个字符串数组。虽然function generate()
正确打印输出console.log(permut);
,但它不返回任何数据。
版本 1 带return arr
var arrStr = ['a', 'a', 'b'];
var generated = generate(arrStr, arrStr.length);
console.log(g2);
function generate(arr, n) {
if (n === 1) {
console.log(arr);
return arr;
} else {
for (var i = 0; i < n; i++) {
generate(arr, n - 1);
if (n % 2 === 0) {
swap(i, n-1, arr);
} else {
swap(0, n-1, arr);
}
}
}
}
function swap(a, b, ar) {
var temp = ar[b];
ar[b] = ar[a];
ar[a] = temp;
}
带permut = permut.concat(arr);
的版本 2
var arrStr = ['a', 'a', 'b'];
var generated = [];
generate(arrStr, arrStr.length, generated);
console.log(generated);
function generate(arr, n, permut) {
if (n === 1) {
permut = permut.concat(arr);
//console.log(permut);
} else {
for (var i = 0; i < n; i++) {
generate(arr, n - 1, permut);
if (n % 2 === 0) {
swap(i, n-1, arr);
} else {
swap(0, n-1, arr);
}
}
}
}
function swap(a, b, ar) {
var temp = ar[b];
ar[b] = ar[a];
ar[a] = temp;
}
版本 1 返回变量 generated
的未定义,版本 2 返回空数组。
我试图返回一个测试字符串"asd",但仍然没有得到任何东西。
在 JavaScript 函数中声明的变量,成为函数的 LOCAL。看看Javascript范围。换句话说,您对函数内部的函数参数所做的更改不会影响函数外部的参数变量。
只需在算法结束时返回生成的对象即可。
例:
var n = 1;
incrementByOne(n);
console.log(n) //still 1
function incrementByOne(number) {
number++;
}
解决方案是返回结果并使用变量获取它:
var n = 1;
n = incrementByOne(n);
console.log(n) //now it's 2
function incrementByOne(number) {
return number++;
}
相关文章:
- 是否有任何内置方法可以更改JavaScript对象'的属性设置为某个值
- 谷歌日历 api 调用可以在角度工厂内返回承诺吗?
- 如何在角度过滤器内返回 html5 音频/视频作为输出
- 需要在悬停时激活动作,并在7秒内返回到原始状态
- Javascript字符串在script标记内返回
- 与承诺内返回和承诺外返回的区别
- 使用 CasperJS 时,是否可以在执行任何内联或外部 Javascript 之前与加载页面的 DOM 进行交互
- 找不到“”;应用程序“;模板或视图.对象{fullName:“template:application”}将不呈现任何内
- 为什么moment()在$q内返回n
- 如何在没有任何内置函数的情况下将元素添加到数组中
- 检查函数是否对数组中的任何项返回true
- 在闭包内返回函数返回undefined
- 如何获得元素id点击没有任何内联函数调用在javascript
- 在javascript/jquery中是否有任何内置功能来过滤邮件,如php's函数(!使用filter_var
- 在JavaScript中过滤数组,而不使用任何内置函数或新数组
- 无法在对象内返回对象.与string.prototype.replace方法不匹配的每个循环的关键字
- Jquery是否有任何内置方法来单独查找可验证的元素?
- 从嵌套函数内返回
- 我试图在不使用任何内置方法的情况下延迟此函数.为什么这行不通呢?
- 如何在不使用javascript中任何内置函数的情况下反转字符串