【问题标题】:Javascript parseInt() function only works once?Javascript parseInt() 函数只能工作一次?
【发布时间】:2021-02-21 21:04:12
【问题描述】:

我是 Javascript 新手,有一个关于使用 parseInt() 函数将字符串转换为数字的问题。

我正在通过编写以下代码来练习 parseInt,并在将用户输入从字符串变为数字之前使用 typeof 检查控制台中的数据类型。显示结果后,我再次使用控制台日志检查数据类型,仍然是字符串。

parseInt() 是否在此语句运行期间仅转换一次,然后返回原始状态?原始状态是指最初编写代码的状态。在这种情况下,HTMLBadges 会提示用户输入一个字符串。

let HTMLBadges = prompt("How many HTML badges have you earned?");
let CSSBadges = prompt("How many CSS badges have you earned?");

console.log(typeof HTMLBadges + typeof CSSBadges);

totalBadges = parseInt(HTMLBadges) + parseInt(CSSBadges);

console.log(`You have a total of ${totalBadges} badges!`);

console.log(typeof HTMLBadges + typeof CSSBadges);

【问题讨论】:

  • parseInt 不会更改参数。它返回一个新整数,但参数保持不变。
  • 为什么不呢?你没有将它分配给变量,你没有做HTMLBadges = parseInt(HTMLBadges)
  • 字符串在 javascript 中是不可变的。这是一种奇特的说法,我们不能改变原件。如果您想稍后访问它们,您需要将突变保存到变量中。

标签: javascript


【解决方案1】:

parseInt 返回一个number,但它不会原地改变原始变量。

尝试您的代码并将以下内容添加到它的末尾:

let numberVersion = parseInt(HTMLBadges)
console.log(typeof numberVersion)

您会看到 parseIntnumberVersion 中的结果实际上是一个数字,但同样,原始变量 HTMLBadges 在调用期间不会发生变化。

【讨论】:

  • 谢谢大家!我能否在代码上高效,将赋值和变异结合在一起,以便提示用户提供值,同时将其更改为数字?类似" ``` let HTMLBadges = parseInt(HTMLBadges.prompt("你获得了多少 HTML 徽章?")); ``
  • 差不多。你不会打电话给HTMLBadges.prompt——只是parseInt(prompt("..."))。请记住,您可能想要测试错误(比如它不是数字)。如果此答案解决了您的问题,请随时单击复选标记接受它。
猜你喜欢
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 2023-02-04
  • 1970-01-01
  • 2017-09-10
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
相关资源
最近更新 更多