Javascript 大写元音:包含变量使If语句行为异常
我一直在试着解决一些编码红细胞的问题,在那里我遇到了大写元音的问题。当我在if语句中包含变量“matchTheChar”时,代码会给我一个奇怪的值Javascript 大写元音:包含变量使If语句行为异常,javascript,if-statement,Javascript,If Statement,我一直在试着解决一些编码红细胞的问题,在那里我遇到了大写元音的问题。当我在if语句中包含变量“matchTheChar”时,代码会给我一个奇怪的值 function VowelCount(str) { var results=0; var str=str.toLowerCase(); var matchTheChar= str.charAt(i); myRegExp=/[aeiou]/; for (var i=0; i<str.length; i++){ if
function VowelCount(str) {
var results=0;
var str=str.toLowerCase();
var matchTheChar= str.charAt(i);
myRegExp=/[aeiou]/;
for (var i=0; i<str.length; i++){
if (myRegExp.test(matchTheChar)){
results=results+1;
}
}
return results;
}
函数元音计数(str){
var结果=0;
var str=str.toLowerCase();
var matchTheChar=str.charAt(i);
myRegExp=/[aeiou]/;
对于(var i=0;i您的
var matchTheChar= str.charAt(i);
在之前,将任何值赋给i
,并在循环之外。这意味着它基本上是:
var matchTheChar= str.charAt(undefined);
…这将为您提供第一个字符*。然后您将重复测试循环中的第一个字符,因为您从未为匹配CHAR
指定新值
只需在循环内设置匹配CHAR
:
function VowelCount(str) {
var results=0;
var str=str.toLowerCase();
var matchTheChar;
myRegExp=/[aeiou]/;
for (var i=0; i<str.length; i++){
matchTheChar= str.charAt(i); // <===
if (myRegExp.test(matchTheChar)){
results=results+1;
}
}
return results;
}
函数元音计数(str){
var结果=0;
var str=str.toLowerCase();
var-matchthecar;
myRegExp=/[aeiou]/;
对于(var i=0;i在您的第一个代码段中,您只运行了一次str.charAt(i)
,此时i
是未定义的。在您的第二个代码段中,您在循环中每个字符调用它一次。非常棒的答案。同样感谢您对我的代码提出的额外建议,我们将相应地实现它。
function VowelCount(str) {
var results=0;
var str=str.toLowerCase();
var matchTheChar;
myRegExp=/[aeiou]/;
for (var i=0; i<str.length; i++){
matchTheChar= str.charAt(i); // <===
if (myRegExp.test(matchTheChar)){
results=results+1;
}
}
return results;
}