Javascript初学者编程问题



这是我的编码。

switch(education){
case "no highschool diploma":
salary="25636";
break;
case "a high school diploma":
salary="35256";
break;
case "an Associate's degree":
salary = "41496";
break;
case "an Bachelor's degree":
salary = "59124";
break;
case "an Master's degree":
salary = "69732";
break;
case "an Professional degree":
salary = "89960";
break;
case "an Doctoral degree":
salary = "84396";
break;
}
console.log("In 2015, a person with "+education+" earned an average of "+ salary.toLocaleString("en-US") +"/year.");

我想知道为什么结果是

2015年,拥有高中文凭的人平均年收入为35256美元。

不是

2015年,拥有高中文凭的人平均年收入为35,256美元。

我错在哪里?

你的值是字符串,让它们成为数字:

const stringVariable = "12345";
const numberVariable = 12345;
console.log(stringVariable.toLocaleString("en-US")); // Logs 12345
console.log(numberVariable.toLocaleString("en-US")); // Logs 12,345

如果您正在处理字符串类型,则需要首先转换为数字。console.log("In 2015, a person with "+education+" earned an average of "+ Number(salary).toLocaleString("en-US") +"/year.");

这是因为工资=" 35256"作为字符串传递。试着把salary改成35256,应该可以了

不同的数据类型(例如Number, String, Date)通常有自己的.toLocaleString()实现

因为你在String上调用.toLocaleString(),你当前使用的是Object数据类型中定义的默认实现,它没有被覆盖。

但是,如果您想使用与Number相关联的版本。您可以在调用.toLocaleString()之前使用Number()将字符串转换为数字。

如果你想了解更多,请阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toLocaleString

const education = "a high school diploma";
switch(education){
case "no highschool diploma":
salary="25636";
break;
case "a high school diploma":
salary="35256";
break;
case "an Associate's degree":
salary = "41496";
break;
case "an Bachelor's degree":
salary = "59124";
break;
case "an Master's degree":
salary = "69732";
break;
case "an Professional degree":
salary = "89960";
break;
case "an Doctoral degree":
salary = "84396";
break;
}
console.log("In 2015, a person with "+education+" earned an average of " + Number(salary).toLocaleString("en-US") +"/year.");

最新更新