如何比较和分析两个用于从本地存储保存/接收项目的脚本?

问题描述 投票:0回答:1

我试图理解第二个代码,但我的思想只围绕着我的第一个代码(它已经很明显了,因为它很糟糕)。我理解三元运算符(甚至第二个代码),但我只想接受第一个代码作为更好的代码,尽管它又长又糟糕(但对我来说它更全面);这是我刚开始学习时的正常行为吗? 顺便说一句,我开始学习 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中,这在两个代码中都是成功的。但我真的无法使用第二个代码。

javascript local-storage
1个回答
0
投票

就我而言,我曾经使用长代码而不是短高效代码。 但随着时间的推移,我想让我的代码更短。所以我像第二个一样改变了我的代码风格。我认为您的行为(更喜欢长代码)是程序员初学者的普遍行为。 (即使是专业程序员)

顺便说一句。我想建议你一些改进。 '++' 和 '--' 运算符现在使用得不是很好。 您可以像以前一样使用“+=”运算符。 (

score.wins += 1
)。 这是我的主观建议。 在第二个代码中,

console.log(guess === result ? 'You win!' : 'You lose!');

if (guess === result) {
  score.wins++;
} else {
  score.losses++;

}

你的代码比这段代码好。 因为您的代码比第二个代码更直观。 我更喜欢按相同类别的角色划分代码。

你不需要应用我的建议,因为我不是专业的程序员,甚至我不擅长英语....抱歉我的语法错误和上下文缺陷。

© www.soinside.com 2019 - 2024. All rights reserved.