Files
Shaun Hamilton c2a11ad00d feat: add 'back/front end' in curriculum (#42596)
* chore: rename APIs and Microservices to include "Backend" (#42515)

* fix typo

* fix typo

* undo change

* Corrected grammar mistake

Corrected a grammar mistake by removing a comma.

* change APIs and Microservices cert title

* update title

* Change APIs and Microservices certi title

* Update translations.json

* update title

* feat(curriculum): rename apis and microservices cert

* rename folder structure

* rename certificate

* rename learn Markdown

* apis-and-microservices -> back-end-development-and-apis

* update backend meta

* update i18n langs and cypress test

Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>

* fix: add development to front-end libraries (#42512)

* fix: added-the-word-Development-to-front-end-libraries

* fix/added-the-word-Development-to-front-end-libraries

* fix/added-word-development-to-front-end-libraries-in-other-related-files

* fix/added-the-word-Development-to-front-end-and-all-related-files

* fix/removed-typos-from-last-commit-in-index.md

* fix/reverted-changes-that-i-made-to-dependecies

* fix/removed xvfg

* fix/reverted changes that i made to package.json

* remove unwanted changes

* front-end-development-libraries changes

* rename backend certSlug and README

* update i18n folder names and keys

* test: add legacy path redirect tests

This uses serve.json from the client-config repo, since we currently use
that in production

* fix: create public dir before moving serve.json

* fix: add missing script

* refactor: collect redirect tests

* test: convert to cy.location for stricter tests

* rename certificate folder to 00-certificates

* change crowdin config to recognise new certificates location

* allow translations to be used

Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>

* add forwards slashes to path redirects

* fix cypress path tests again

* plese cypress

* fix: test different challenge

Okay so I literally have no idea why this one particular challenge
fails in Cypress Firefox ONLY. Tom and I paired and spun a full build
instance and confirmed in Firefox the page loads and redirects as
expected. Changing to another bootstrap challenge passes Cypress firefox
locally. Absolutely boggled by this.

AAAAAAAAAAAAAAA

* fix: separate the test

Okay apparently the test does not work unless we separate it into
a different `it` statement.

>:( >:( >:( >:(

Co-authored-by: Sujal Gupta <55016909+heysujal@users.noreply.github.com>
Co-authored-by: Noor Fakhry <65724923+NoorFakhry@users.noreply.github.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
2021-08-13 21:57:13 -05:00

4.5 KiB
Raw Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
bd7158d8c442eddfaeb5bd17 構建一個 JavaScript 計算器 3 301371 build-a-javascript-calculator

--description--

目標:CodePen.io 上實現一個功能類似 https://codepen.io/freeCodeCamp/full/wgGVVX 的 App。

在滿足以下需求並能通過所有測試的前提下, 可以根據自己的喜好來美化 app。

可以使用 HTML、JavaScript、CSS、Bootstrap、SASS、React、Redux、jQuery 來完成這個挑戰。 但鑑於這個章節的學習內容與前端框架相關,推薦使用一款前端框架(比如 React來完成這個挑戰。 不推薦使用前面沒有提到的技術,否則風險自負。 我們有計劃新增其他前端框架課程,例如 Angular 和 Vue不過目前還沒有這些內容。 我們會接受並嘗試修復使用推薦技術棧遇到的反饋問題。 編碼愉快!

需求 1 計算器應該包含一個具有 id="equals" 屬性的可以點擊的元素,元素的文本內容爲 =(等於符號)。

需求 2 計算器應該包含 10 個具有如下 id 屬性的可以點擊的元素,每個元素的文本內容對應 0-9 的數字:id="zero"id="one"id="two"id="three"id="four"id="five"id="six"id="seven"id="eight"id="nine"

需求 3 計算器應該包含四個可以點擊的元素文本內容對應4個主要數學運算符且應具有如下 id 屬性: id="add", id="subtract", id="multiply", id="divide"

需求 4 計算器應該包含一個可點擊的 .(小數點)符號,對應的 id="decimal"

需求 5 計算器應該包含一個具有 id="clear" 屬性的可以點擊的元素。

需求 6 我的計算器應該包含一個用於展示數值的元素,這個元素具有 id="display" 屬性。

需求 7 在任何時候按下 clear 鍵,都會清空輸入和輸出的數值並且使計算器回到初始狀態;此時在 id 爲 display 的元素中應該顯示數字 0。

需求 8 在輸入數字的同時,應該能看到輸入的數字展示在 id 爲 display 的元素中。

需求 9 應該可以在任意順序下對一串任意長度的數字執行加、減、乘、除操作,並且當按下 = 時,正確答案應該顯示在 id 爲 display 的元素中。

需求 10 在輸入數字的同時,計算器應該不允許一個數字以多個零開頭。

需求 11 當點擊小數點元素時,當前展示的數值後面應該添加一個 . 符號;數字中不允許出現兩個 . 符號。

需求 12 我可以對包含小數點的數字執行任何四則運算(+-*/)。

需求 13 如果連續鍵入了兩個及以上的運算符,應該執行最後一次鍵入的運算符(負數(-)運算符除外)。 例如,如果輸入 5 + * 7 =,結果應該是 35 (等同於 5 * 7);如果輸入 5 * - 5 =,結果應該是 -25(等同於 5 * (-5))。

需求 14 如果在按下 = 符號後繼續按一個運算符,則應該在上一次計算結果的基礎上進行新的計算。

需求 15 當需要四捨五入時,計算器可以處理結果的精度(注意:處理到多少位沒有一個準確的標準,但是至少能處理類似 2 / 7 這樣的計算,使之至少有 4 位小數的精度)。

注意計算器的邏輯: 應當注意的是,計算器輸入邏輯主要有兩種思路:立即執行邏輯公式邏輯。 我們的示例使用公式邏輯並遵守運算優先順序,而立即執行則不然。 兩者都是可以接受的,但請注意,根據你的選擇,你的計算器對於某些算式可能會得到與示例不同的計算結果(參見下面的示例)。 只要數學計算可以通過其它現實中計算器的驗證,那麼代碼就是合理的。

示例: 3 + 5 x 6 - 2 / 4 =

  • 立即執行邏輯: 11.5
  • 公式/表達式邏輯: 32.5

你可以使用這個 CodePen 模板,點擊 Save 即可創建你自己的項目。 或者可以在任何喜歡的環境中使用以下 CDN 鏈接來運行測試:https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js

當你完成了本項目,並且該項目所有測試運行通過,請提交項目的 URL。

--solutions--

// solution required