我是初学者,只是成功地解决了我的代码问题。我很高兴我找到了它,但是我花了很长时间。我希望了解它为什么会发生。
这是有缺陷的原始代码。假设已为变量[nextAlpha]
分配了一个字符串值:
nextAlpha.toUpperCase();
通过一些创造性测试,我能够确定是导致问题的线。我想也许它实际上并没有更新变量[nextAlpha]
的值。我尝试了这个,它起作用了:
nextAlpha = nextAlpha.toUpperCase();
我已经离开了我的其余代码,但是假设已经在我的脚本顶部声明了[var = nextAlpha]
,我认为这意味着“全局”。有了这些信息,我认为只需在变量上调用方法即可。为什么这不会将字符串“更新”为大写字母,就像我执行额外步骤(重新)将其分配给原始[nextAlpha]
字符串一样?
答案 0 :(得分:2)
toUpperCase
将转换后的字符串作为新对象返回 - 它不会在nextAlpha
上执行转换。
来自Mozilla参考:
toUpperCase方法返回转换为大写的字符串的值。 toUpperCase不会影响字符串本身的值。
答案 1 :(得分:2)
在JavaScript中,字符串是不可变的:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures
与C语言不同,JavaScript字符串是不可变的。这意味着一旦创建了一个字符串,就无法对其进行修改。但是,仍然可以根据对原始字符串
的操作创建另一个字符串
答案 2 :(得分:1)
toUpperCase()
是一个函数(所以返回一个值)而不是一个属性(影响变量本身)