moo*_*law 1 javascript object for-in-loop
我正在尝试创建一个遍历对象属性的函数,如果该值是一个数字,则将值乘以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);
Run Code Online (Sandbox Code Playgroud)
数字(以及字符串和布尔值)按值传递.您正在将值复制为要修改它的新变量.
您需要直接修改对象的属性:
for (var key in menu) {
if (typeof menu[key] === 'number') {
menu[key] *= 2;
}
}
Run Code Online (Sandbox Code Playgroud)
此外,"number"如果您要求,JavaScript将不会返回typeof("200"); 它会回来"string".你需要一个数字文字,而不是一个字符串:
var menu = {
width: 200,
height: 300,
title: "My menu"
};
Run Code Online (Sandbox Code Playgroud)