Javascript Console.log从后面的代码输出数据

Javascript Console.log从后面的代码输出数据,javascript,console.log,Javascript,Console.log,很抱歉,这个问题的标题太粗制滥造了——我真的无法再简洁地描述这个问题了 我不知道我的代码里发生了什么!我有一个像这样的对象: var fruits = {name: "bananas", quantity: "3"} 以及一个数量输入字段(#qty),其值为(比如)2 问题是在所有这些运行之后,当我进入控制台检查console.log(fruits)的输出时,控制台显示{name:“banana”,数量:5} p.S.注意增加的数量和缺少引号 知道发生了什么吗?当您记录一个JSON的状态时,

很抱歉,这个问题的标题太粗制滥造了——我真的无法再简洁地描述这个问题了

我不知道我的代码里发生了什么!我有一个像这样的对象:

var fruits = {name: "bananas", quantity:  "3"}
以及一个数量输入字段(
#qty
),其值为(比如)2

问题是在所有这些运行之后,当我进入控制台检查
console.log(fruits)的输出时,控制台显示
{name:“banana”,数量:5}

p.S.注意增加的数量和缺少引号


知道发生了什么吗?

当您记录一个JSON的状态时,它会显示您查看它时对象的当前状态。 无论何时从控制台打开对象,都会看到最新的更改

var fruits={名称:“香蕉”,数量:“3”}
函数fnincrement1(){
原木(水果);
}
函数fnincrement2(){
水果数量=数量(水果数量)+3;
原木(水果);
}
按钮1
按钮2

首先,您使用了一种错误的方法从对象获取值,即fruits变量(json是有效的对象)。 有两种方法可以获取对象的属性:

var obj = {
    key1: value1,
    key2: value2
};
使用点表示法:

obj.key1 
obj["key2"]
使用方括号表示法:

obj.key1 
obj["key2"]
当您知道属性的名称时,将使用第一种形式。当动态确定属性的名称时,使用第二种形式

我猜你有一个对象数组

比如:

var fruits = [
{name: "bananas", quantity:  "3"},
{name: "apples", quantity:  "4"},
...
];
如果是这样的话,你正在做类似的事情-

fruits[0].quantity = Number(fruits[0].quantity) + Number($("#qty").val());
您正在选择水果数组的第一个对象,即{name:“banana”,quantity:“3”},然后将其“quantity”属性更改为3+2(Number(水果[0].quantity)+Number($(“#qty”).val()),即5(请记住:这是一个数字,而不是字符串,因为您使用Number()显式地对其进行了强制转换)。这就是为什么在console.log中看不到引号的原因


Number()是javascript中的一个函数,返回传递给它的数值形式。因此,如果您执行类似数字(“30”)的操作,它将以数字而不是字符串的形式返回30。

这是因为分配给
水果[0]的数量。
是一个
数字。如果该数量为
字符串,则会出现双引号

因此,您可以使用
javascript
String()
函数将此数字键入
String

fruits[0].quantity = String(Number(fruits[0].quantity) + Number($("#qty").val()));
输出

{name: "bananas", quantity:  "5"}

为什么
fruits[0]
?您没有名为
0
的数组或属性。您的代码根本不应该运行(但如果运行了,输出将是正确的,不是吗?。
警报(fruits[0].quantity);//输出3
-不,它会引发异常,因为您试图读取未定义值的
数量。向我们表示真正的感谢。我之所以包括
水果[0]
而不是
水果
是因为当忽略
[0]
时,我会收到
未定义的
NaN
作为我的
警报()s
@Quentin,不确定您为什么认为它是一个未定义的值…但是,是的,看起来您的重复建议就是答案。建议是在操纵(添加)变量时,记录变量的副本,而不是变量本身在控制台真正记录它之前,这就是为什么当它最终记录它时,它会显示附加值。“不确定为什么你认为它是一个未定义的值”-因为它是:谢谢@Quentin。我已经修改了我的个人代码,以便更容易在这里发布。我不确定为什么它在这里未定义,但它在我的服务器上运行良好。