这是我的编码。
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.");