初学者问题:为什么这个for循环返回false?
P粉022723606
P粉022723606 2023-09-08 17:31:55
0
1
368

我正在 JS 中做一些作业,并且我编写了一个函数来比较字符串 (str) 的结尾,如果它与“目标”字符串匹配,则返回 true 或 false(这可以更容易完成,但是这个我选择了这样的混乱方式):

function confirmEnding(str, target) { let valid = true; console.log(str.length); console.log(target.length); for(let i = 0; i < target.length; i++){ if (str.substring(str.length - (i+1)) == target.substring(target.length - (i+1))){ valid = true; } else{ valid = false; } } console.log(valid); return valid; }

所以,这个函数确实有效,但是看着它,我不明白为什么......

如果我跑步

confirmEnding("Testing123", "tin5123");

在我看来它应该返回 true,但是 for 循环在 for 循环第四次迭代后并没有将变量“valid”的值更改回 true? (for 循环不应该也迭代 5、6 和 7 并返回“true”以获得“valid”吗?)

我从 OpenAI 得到的答案是该函数正在检查“target”是否与“str”的末尾匹配。如何?我看不到任何地方我已做出任何具体指示来执行此操作...

函数如何决定返回变量“有效”的哪个值?它是否会遍历所有内容,并且仅在 ALL i 为 true 时才返回“if: valid = true”?为什么?

谢谢

P粉022723606
P粉022723606

全部回复 (1)
P粉575055974

它之所以有效,是因为它从末尾开始

function confirmEnding(str, target) { let valid = true; for(let i = 0; i < target.length; i++){ console.log(str.substring(str.length - (i+1)), target.substring(target.length - (i+1))) if (str.substring(str.length - (i+1)) == target.substring(target.length - (i+1))){ valid = true; } else{ valid = false; } } return valid; } console.log(confirmEnding("Testing123", "tin5123"));

为什么还要麻烦循环呢?

function confirmEnding(str, target) { return str.endsWith(target) } console.log(confirmEnding("Testing123", "tin5123"));
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!