真的不确定JavaScript是怎么回事,但是即使阅读了类似Simple function returning 'undefined' value这样的其他文章,实际上也无法弄清楚。由于某种原因,当我将代码放置在函数中时,它将返回“ undefined”,而不是true或false。
如果我使用不带函数的代码并在第一行定义var a
,则可以正常工作:
var a = "wjebh ghbui ayub";
var b = (a.split(' ').join('')).split('a'); // creates array
var trueOrFalse = b.map(function(c, i){ // puts into array true/false for each index
if (c[2] == 'b') {
console.log('value: ' + c[2] + ' is b; true');
return true;
} else {
console.log('false');
return false;
}
});
var answer = function(el) {
// checks whether any element is true
return el === true;
};
trueOrFalse.some(answer); // return true/false
但是当我将其添加到函数中时,它不起作用。
function bThreeAfterA(a) {
var b = (a.split(' ').join('')).split('a'); // creates array
var trueOrFalse = b.map(function(c, i){ // puts into array true/false for each index
if (c[2] == 'b') {
console.log('value: ' + c[2] + ' is b; true');
return true;
} else {
console.log('false');
return false;
}
});
var answer = function(el) {
// checks whether any element is true
return el === true;
};
trueOrFalse.some(answer); // return true/false
}
即使将其放入IIFE中,也无法正常工作:
(function(){
var a = "wjebh ghbui ayub";
var b = (a.split(' ').join('')).split('a'); // creates array
var trueOrFalse = b.map(function(c, i){ // puts into array true/false for each index
if (c[2] == 'b') {
console.log('value: ' + c[2] + ' is b; true');
return true;
} else {
console.log('false');
return false;
}
});
var answer = function(el) {
// checks whether any element is true
return el === true;
};
trueOrFalse.some(answer); // return true/false
})();
我觉得我在这里做的很愚蠢,大多数人都很容易发现。有人可以在这里解释我做错了什么吗?大概这是某种初学者语法错误。链接到任何阅读资源也将很有帮助。
答案 0 :(得分:1)
我们都去过那里。
运行一下。
function bThreeAfterA(a) {
var b = (a.split(' ').join('')).split('a'); // creates array
var trueOrFalse = b.map(function(c, i){ // puts into array true/false for each index
if (c[2] == 'b') {
console.log('value: ' + c[2] + ' is b; true');
return true;
} else {
console.log('false');
return false;
}
});
var answer = function(el) {
// checks whether any element is true
return el === true;
};
return trueOrFalse.some(answer); //ACTUALLY return true/false
}
console.log("Answer: " + bThreeAfterA("wjebh ghbui ayub")); // Returns true.
当您对块作用域之外的变量进行操作时,它们将持续存在。当它们进入内部时,它们消失了。
因此,它“起作用”,但是当您将其包含在函数中时却没有“起作用”。