我一直在使用codecademy中的Javascript,对其中一个问题有疑问。
问题:
写两个函数:
one creates an object from arguments
the other modifies that object
我的回答:
//First, the object creator
function makeGamePlayer(name,totalScore,gamesPlayed) {
//should return an object with three keys:
// name
// totalScore
// gamesPlayed
var myObject = {
"name": name,
"totalscore" : totalscore,
"gamesPlayed" : gamesPlayed
};
return myObject;
}
//Now the object modifier
function addGameToPlayer(player,score) {
//should increment gamesPlayed by one
//and add score to totalScore
//of the gamePlayer object passed in as player
var score = player[totalscore];
score =score+1;
player[totalscore] = score;
}
不确定我的错误在哪里。需要一些改进此解决方案的指导..非常感谢...
答案 0 :(得分:4)
在您的对象中,您永远不会分配分数
"totalscore" : totalscore,
应该是
"totalscore" : totalScore
因为你传递了totalScore
答案 1 :(得分:3)
您无法正确访问该对象
var score = player.totalscore;
或
var score = player["totalscore"];
它需要一个字符串,但是你传递的是一个未定义的变量。
您还在函数内定义score
两次,为内部变量使用不同的名称。
答案 2 :(得分:1)
makeGamePlayer
的参数名为totalScore
,但您在totalscore
中使用myObject
这是一个不同的名称 - 案例很重要。
您在addGameToPlayer
尝试使用名为totalscore
的变量但未定义的变量时也遇到问题
答案 3 :(得分:0)
除了拼写错误和你的代码相当愚蠢和毫无意义的IMO(对不起,但谷歌道格拉斯克罗克福德JavaScript对象或其他东西和读什么是powerconstructor),我想你要检查是否所有参数传递给函数。如果是这样的话:
function foo (bar, foobar)
{
if (arguments.length < 2)
{
throw new Error('foo expects 2 arguments, only '+arguments.length+' were specified');
}
//or - default values:
bar = bar || 'defaultBar';
//check the type?
if (typeof bar !== 'string' || typeof foobar !== 'number')
{
throw new Error ('types don\'t match expected types');
}
}
依此类推...但是,在提问时请阅读并更具体一些