我试图理解第二个代码,但我的思想只围绕着我的第一个代码(它已经很明显了,因为它很糟糕)。我理解三元运算符(甚至第二个代码),但我只想接受第一个代码作为更好的代码,尽管它又长又糟糕(但对我来说它更全面);这是我刚开始学习时的正常行为吗? 顺便说一句,我开始学习 JS 才三天,所以请随意添加任何可能有助于像我这样的笨蛋改进的建议。
我的代码:
<button onclick="
playGame('tails');
">tails</button>
<button onclick="
playGame('heads')
">heads</button>
<script>
let result = '';
let score = {
wins: 0,
losses: 0
}
let scoresFromLocalStorage = localStorage.getItem('scores');
if (scoresFromLocalStorage) {
score = JSON.parse(scoresFromLocalStorage);
}
function playGame(choice) {
const randomNumber = Math.random();
if (randomNumber < 0.5) {
result = 'heads';
} else {
result = 'tails';
}
console.log('Computer: ' + result);
console.log('You: ' + choice);
if (choice === result) {
console.log('You win');
score.wins += 1;
} else {
console.log('You lost');
score.losses += 1;
}
let jsonScore = JSON.stringify(score);
localStorage.setItem('scores', jsonScore);
score = JSON.parse(localStorage.getItem('scores'));
console.log(score);
}
</script>
第二个或更好的代码:
<button onclick="
playGame('heads');
">heads</button>
<button onclick="
playGame('tails');
">tails</button>
<script>
// We can use const here since score is a reference
// so we can modify it even if it uses const.
const score = JSON.parse(localStorage.getItem('score')) || {
wins: 0,
losses: 0
};
function playGame(guess) {
const randomNumber = Math.random();
const result = randomNumber < 0.5 ? 'heads' : 'tails';
console.log(guess === result ? 'You win!' : 'You lose!');
if (guess === result) {
score.wins++;
} else {
score.losses++;
}
console.log(score);
localStorage.setItem('score', JSON.stringify(score));
}
</script>
将结果保存在localStorage中,这在两个代码中都是成功的。但我真的无法使用第二个代码。
就我而言,我曾经使用长代码而不是短高效代码。 但随着时间的推移,我想让我的代码更短。所以我像第二个一样改变了我的代码风格。我认为您的行为(更喜欢长代码)是程序员初学者的普遍行为。 (即使是专业程序员)
顺便说一句。我想建议你一些改进。 '++' 和 '--' 运算符现在使用得不是很好。 您可以像以前一样使用“+=”运算符。 (
score.wins += 1
)。
这是我的主观建议。
在第二个代码中,console.log(guess === result ? 'You win!' : 'You lose!');
if (guess === result) {
score.wins++;
} else {
score.losses++;
}
你不需要应用我的建议,因为我不是专业的程序员,甚至我不擅长英语....抱歉我的语法错误和上下文缺陷。