我正在尝试创建一个遍历对象属性的函数,如果该值是一个数字,则将值乘以2。
我确定var value
是一个整数,但它没有应用乘法?我在这个代码中哪里出错?
var menu = {
width: "200",
height: "300",
title: "My menu"
};
function multiplyNumeric(menu) {
for(var key in menu) {
var value = menu[key];
if( typeof value === 'number' ) {
value = value * 2;
}
}
}
multiplyNumeric(menu);
alert(menu.width);
答案 0 :(得分:5)
数字(以及字符串和布尔值)按值传递。您正在将值修改为您正在修改它的新变量。
您需要直接修改对象的属性:
for (var key in menu) {
if (typeof menu[key] === 'number') {
menu[key] *= 2;
}
}
此外,如果您要求"number"
,JavaScript将不会返回typeof("200")
;它将返回"string"
。你需要一个数字文字,而不是一个字符串:
var menu = {
width: 200,
height: 300,
title: "My menu"
};
答案 1 :(得分:0)
只需将这些字符串更改为对象中的数字:
var menu = {
width: 200,
height: 300,
title: "My menu"
};
答案 2 :(得分:0)
编辑您的对象,如下所示,不要在对象上使用数字引号
var menu = {
width:200,
height:300,
title: "My menu"
};