Javascript 动态字符串在更改生成它的值时不会更改

Javascript 动态字符串在更改生成它的值时不会更改,javascript,json,string,Javascript,Json,String,我有一个JSON,它保存一些值,这些值被连接到一个字符串中,但是当我更改JSON的值时,该字符串不采用名称值。如何使字符串接受新值而不重新声明相同的字符串 看,我可以很容易地把string=name.first++name.last;下面是我更改JSON值的地方,但是当我想要编辑该字符串的格式时,我必须更改两次。变量不是这样工作的。您必须再次设置字符串的值才能更新它 这是一个改进的版本,因此如果要编辑某些内容,您无需更改两次: function generateString(name) {

我有一个JSON,它保存一些值,这些值被连接到一个字符串中,但是当我更改JSON的值时,该字符串不采用名称值。如何使字符串接受新值而不重新声明相同的字符串


看,我可以很容易地把string=name.first++name.last;下面是我更改JSON值的地方,但是当我想要编辑该字符串的格式时,我必须更改两次。

变量不是这样工作的。您必须再次设置字符串的值才能更新它

这是一个改进的版本,因此如果要编辑某些内容,您无需更改两次:

function generateString(name) {
    return name.first + "<br />"+name.last;
}
var string = generateString(name);

这不会像您描述的那样起作用,但是您可以声明一个返回适当字符串的函数

所以不是

string = name.first + "<br />" + name.last;

编辑:我刚刚意识到你说的大概是在运行时更改格式。在javascript中使用字符串格式有多种方法,这意味着您可以在stringfunction中使用一个format变量,您可以在运行时更改该变量以修改结果字符串的格式。但是,我已经很久没有使用这些工具了,所以我将把它留给其他人来解释如何在javascript中进行字符串格式化。

这是因为您的字符串是基本类型,因此保存的是实际数据而不是指针。当您更改您认为应该更改字符串的数据时,它只会更改数据。这可以通过重新发出用于构造字符串的代码看到

$('#test').empty().append(name.first + "<br />"+name.last);

您是否希望在name.first时字符串自动更改?您更改了name。。。不是绳子。这不是JS或任何其他语言的方式吗?工作。@Ibu是的。我想更改而不必重新声明。@sachleen为什么我要更改字符串?name.first是我要更改的值。我只想让字符串使用name中的值。首先。是的。。。但是字符串的字面意思是jimmy bob,所以你必须更新它的值,因为你的更好!我只是+1d你的,正要删除我的。哈哈,好吧,如果你这么说的话。我取消删除了我的,但既然你有一个演示,我想你应该把你的留在这里。我想使用单个字符串变量的全部原因是,如果我以后想更改格式,我不必在每个地方重新编辑它。
alert(string); //old
alert(stringfunction()); //new
$('#test').empty().append(name.first + "<br />"+name.last);