繁体   English   中英

在JavaScript中循环使用全局变量更改的问题

[英]Problem with using change of global variable in loop in JavaScript

我有一个全局变量,我想在一个for循环中更改并稍后在“ for”之外使用它

我想编写代码来更正姓和名。 例如:
用户:NICK WATERSON ...代码:Nick Waterson
用户:尼克·沃特森...代码:尼克·沃特森
用户:nICK WATERNEN ...代码:尼克·沃特森

 let fTab = 0; Register: while (true) { var name = prompt('Your fullname:', ''); for (let i = 0; i < name.length; i++) { if (name.charAt(i) == ' ') { fTab = i; break Register; } } alert('Error!!') } name.toLowerCase(); alert('Your name is ' + name.charAt(0).toUpperCase() + name.substr(1, fTab) + name.charAt(i + fTab).toUpperCase() + name.substr(fTab + 2)); 

程序未返回任何内容,因为找不到'fTab'的值

正如@Quentin在他的评论中提到的,您正在使用一种复杂的方法在TitleCase中命名。 您可以使用以下方式,易于阅读和简洁。

 let name = prompt('Your fullname:', ''); let correctedName = name.split(' ') .map(first => first[0].toUpperCase() + first.substr(1).toLowerCase()) .join(' '); console.log(correctedName); 

程序对我来说很好用,只需在最后一行1 + fTab i + fTab替换为1 + fTab

alert('Your name is ' + name.charAt(0).toUpperCase() + name.substr(1, fTab).toLowerCase() + name.charAt(1 + fTab).toUpperCase() + name.substr(fTab + 2).toLowerCase());

将警报行i + fTab1 + fTab AND name = name.toLowerCase();

let fTab = 0;
Register: while (true) {
  var name = prompt('Your fullname:', '');

  for (let i = 0; i < name.length; i++) {
    if (name.charAt(i) == ' ') {
      fTab = i;
      break Register;
    }
  }

  alert('Error!!')
}

name = name.toLowerCase();
alert('Your name is ' + name.charAt(0).toUpperCase() + name.substr(1, fTab) + name.charAt(fTab + 1).toUpperCase() + name.substr(fTab + 2));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM