Open azole opened 1 week ago
nvm: 一個開發者可能會同時有多個專案,每個專案使用的node.js版本不一定相同,此時就可以利用nvm切換版本。 npm: 假如沒有npm統一管理套件的工具,若要使用其他人寫好的依賴就得自行到github或官網下載,簡化安裝。有了npm專案內只要有package.json所有共同開發的人就可以很輕易地align用到的套件版本。
由sum.js的實驗可知先轉為字符串再用eval效率很差,實在不是合適做法。 我認為reduce和forEach兩者都是可用的做法。其中,我會選擇forEach而不是reduce,因為forEach的邏輯更加直觀。
function fib(n) {
if (n == 0 || n == 1) {
return n;
}
// n > 1時,fib(n)=fib(n-1)+fib(n-2)
return fib(n - 1) + fib(n - 2)
}
pop修改為:
pop() {
if (this.isEmpty()) {
console.log("stack is already empty");
return null;
}
return this.#items.pop();
}
另外,目前放在 github 上的 stack & main 是可以執行的。
另外,要和老師討論的是若stack為空時pop,我原先的做法是return;
,實際是return undefined。在stack為空時pop回傳null會比undefined合理嗎?
undefined 跟 null,你覺得你會怎麼解釋這兩者呢?
eval 除了沒有效率外,還很「危險」 ==> 可以研究一下我為什麼這樣說嗎? 可以問問看 AI 怎麼說,或是上網查都可以,但回答我的時候,要是自己消化、理解、內化過的內容,好嗎?
undefined 跟 null,你覺得你會怎麼解釋這兩者呢?
undefined:pop 的意義是 pop 目前 stack 內最後加進的,當 stack 為空時 stack 內最後加進的為 undefined。 null:stack 已經空了,再 pop 出來就是 null(空)
我會對要return undefined 跟 null 有疑問的原因是 以 array 來實作stack時,array 是可以存null的。如果 return null 會不知道array是真的空了還是真的存了一個null。
ev
可能會受到注入攻擊。舉例來說,如果在前端使用eval寫法,若有人在array新增惡意項目,如:['1', '2', 'alert("哈哈哈")'],會跑出一個不在預期內的alert甚至是更嚴重的攻擊。
非常好的問題耶,你可以在 discord 上帶大家討論嗎?
記錄一下 stack 這個在 discord 上討論
eval 這個,對,所以我們都會說盡可能不要用 eval。
readme
那為什麼需要 nvm 跟 npm 呢?
第一週作業的回饋時有提到,要練習更深入一點的思考,所以要請你試試看回答,那為什麼需要 nvm 跟 npm 這樣的工具?
sum
以用 js 的 array 來完成這點來說,你用了 reduce, forEach, eval + join,你覺得哪一種比較合適?
fib
這邊前面兩個 if 是否可以合併?
stack
以 pop 這個函式來說
另外,你目前放在 github 上的 stack & main 是可以執行的嗎? 就是 import Stack 不會失敗?
以上問題要請你在 issue 這邊回覆喔。