我想检查参数之一是否等于$('#KullaniciBtn').click(function () {
var message = "@Html.Raw(ViewBag.message)";
alert (message);
// More code here
}
。
如果是这样,我想返回true,但我得到3
。
这是为什么 ?
undefined
答案 0 :(得分:2)
不同于for循环会创建一个新的作用域,但不会在单独的函数中执行,forEach在单独的函数中执行。也就是说,从forEach处理程序内部返回也不会从外部函数返回。
let x = () => {
[1, 2, 3].forEach(v => {
console.log(v); // 1 2 3
return v;
})
return 0;
};
console.log(x()); // 0
let y = () => {
for (let v = 1; v <=3; v++) {
console.log(v); // 1
return v;
}
return 0; // never reached
};
console.log(y()); // 1
答案 1 :(得分:2)
得到undefined
的原因是因为函数isThree()
没有返回任何内容。函数中的两个返回是从foreach()
内部的匿名函数返回的。
我认为您的函数试图确定数组中是否存在值3
。已经有一个功能:includes()。您的功能可能是:
function isThree(...args) {
return args.includes(3);
};
console.log(isThree(1,2,3,4,5));
答案 2 :(得分:1)
您正在从forEach
函数返回一个值,但这并不意味着您正在从isThree
函数返回一个值。另外,请尝试使用filter
函数来查找与您要查找的号码是否匹配的。
尝试一下:
function isThree(...args){
return args.filter(val => {
if(val === 3){
return true;
}
}).length > 0;
};
console.log(isThree(1,2,3,4,5));
在前面的示例中,我使用filter
返回满足条件的数组的每个实例(在本例中为val === 3
)。返回true
会将结果附加到一个空数组,因此该操作的响应将是一个数组,其中每个实例都满足条件。因此,通过将数组大小与> 0
进行比较,我可以确定是否有任何元素符合条件。
您甚至可以使用简写args.filter(val => val === 3)
来进一步简化该功能:
function isThree(args){
return args.filter(val => val === 3).length > 0;
};
console.log(isThree(1,2,3,4,5));
或者,您可以使用原型函数some
进一步简化操作,该函数检查数组中的任何元素是否满足条件:
function isThree(args){
return args.some(val => val === 3);
};
console.log(isThree(1,2,3,4,5));
答案 3 :(得分:0)
问题出在这里else语句,因为如果找不到if statement
,显然它会用到else statement
,这是一个循环,因此需要修复该循环
for(let a = 0; 10 > a; ++a )
{
if( a === 3) console.log('We\'re done'); // I expect only this not else statement
else console.log('Not found');
}
输出:
"Not found"
"Not found"
"Not found"
"We're done"
"Not found"
在上面的示例中,很多时候我们都犯了这个错误,现在解决这个问题
for(let a = 0; 5 > a; ++a )
{
if( a === 3)
{
console.log('We\'re done');
return true; // I expect only this not else statement
}
}
console.log('Not found');
return false;
我希望它能给您一个有关如何解决循环中意外代码的想法;
总是很乐意为您提供帮助!