Javascript - 我认为这会改变

时间:2016-09-08 17:15:03

标签: javascript

我目前正试图通过引用与值进行交流,据我所知,JS对象通过引用传递。

如果是这种情况,为什么第二个console.log语句不会产生对象属性的大写版本?

任何澄清都会很棒!!!



var string = {
  text: 'This is a string inside an object',
};


console.log(string.text);

string.text.toUpperCase();

console.log(string.text);




4 个答案:

答案 0 :(得分:3)

String#toUpperCase 方法不会更新原始字符串,只返回大写字符串。因此,您需要通过返回的值更新属性值。

var string = {
  text: 'This is a string inside an object',
};


console.log(string.text);

string.text = string.text.toUpperCase();

console.log(string.text);

答案 1 :(得分:0)

.toUpperCase()不会更改原始字符串,但会返回一个新字符串。

请改为尝试:

var string = {
  text: 'This is a string inside an object',
};


console.log(string.text);

string.text = string.text.toUpperCase();

console.log(string.text);

答案 2 :(得分:0)

.toUpperCase();返回一个大写字符串,但不会修改原始参数

答案 3 :(得分:0)

从下面的MDN链接:JavaScript字符串是不可变的。这意味着一旦创建了一个字符串,就无法对其进行修改。但是,仍然可以基于对原始字符串的操作创建另一个字符串。例如:toUpperCase()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures

从下面的MDN链接:toUpperCase()方法返回转换为大写的字符串的值。 toUpperCase()不会影响字符串本身的值。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase