JavaScript var v.s let

const arr1 = [];
for(var i = 0; i < 3; ++i) {
  arr1.push(() => i);
}
const arr2 = arr1.map(x => x());
const arr3 = [];
for(let i = 0; i < 3; ++i) {
  arr3.push(() => i);
}
const arr4 = arr3.map(x => x());
console.log(arr1);
console.log(arr2);
console.log(arr3);
console.log(arr4);

var 和 let 的不同可以看這段代碼的結果。arr1.push(() => i); 因為這邊是回傳函式,函式抓到的i,會是for跑完後的i的值。
arr3.push(() => i) 這時候抓到的i就是區塊級作用域(Block Scope),為循環本體的每一次執行都產生一個作用域。

console.log(a); // undefined
console.log(b); //ReferenceError
var a = 1;
let b = 2;

還有幾個重點
1. let 有暫時死區

參考閱讀
Differences Between var and let

2020面試心得

《華奧科技有限公司》
一開始先簡單的自我介紹一下,我覺得我在講工作的部份應該再講仔細一點,
例如前幾年比較多工作在切版、做特效,用jQuery維護網站,
這幾年用的是前端框架,學習它的ecosystem,也會不時上網查看新知
應該說明一下我除了工作之外還會多上網看有出什麼新東西…

1. React.js的LifeCycle有哪些?
2.你會怎麼處理deep copy和shallow copy
我跟他說我會用一些套件來處理,他說他會直接送一個新的陣列之類的,效能上比較好
3.SPA和MPA的差別?
4.怎麼處理瀏覽器的緩存機制
5.知道SSR嗎?大概解釋一下
6.多域名問題怎麼處理(CORS)
他說後端處理最簡單,但前端其實也可以處理,我跟他說我的處理方法比較笨會用寫死的方式(應該來查查)
7.閉包是什麼,用起來會有什麼問題?
8.有用過TypeScript嗎?
9.解釋一下Redux
10.多語系會怎麼處理
11.怎麼處理xss什麼的
12. ES6的資料型態有哪些

【技術主管介紹時間】
運彩服務,已經有平台了,可是要重做,要用的還在規劃中
PWA有考慮做(他問我能不能說下PWA)
公司使用的技術:後端golong、Docker,前端React.js
公司QA有3~4個,是一個團隊
有歐洲客戶也有亞洲客戶,
英國那邊比較嚴謹,每次代碼都要送審,才會通過發佈
目前還沒有發生過BUG在生產上要急修的問題
亞洲客戶有考慮樣式客製化調整

【HR時間】
公司不能穿拖鞋

 

升鼎科技股份有限公司 

一開始面試考leetcode,幾個工程師看我現 場作題==|||
做到一半我解釋我的邏輯,他們竟然說是對的,我就繼續try下去
後來考完就是
【自我介紹時間】
我demo了一下澳門皇冠,還有天成彩票
他問我有沒有做到響應式的網站(我說活動頁有
我說前幾年做的是切版工作居多,之後做的就比較偏向程式邏輯面。
他們在看我秀彩票的時候,有問我這個專案我的參與度大概多少。
我說假設是新功能我可以獨立完成,可是從無到有建置一個網站就比較不行。
他們問我有沒有用什麼grid system,我說沒有
我有說我用sass預處理器
也有問我有寫過TypeScript嗎?

【聊工作時間】
他們有六個工程師,一個前端,用的後端語言是PHP, node.js(竟然只有這二個!)
前端是用React.js

面試官說他們有點像是博奕業。是做虛擬幣交易平台的,
當然也有做其它東西,不過目前主軸應該是這個
他說交易平台有二種,場外跟什麼的,
這個是合法的,但如果別人想拿現金來買虛擬幣就不合法
就類似銀行可以拿台幣來換美金,那是只有銀行才能做的,
我們不能隨便開銀行之類的…
使用者交易虛擬幣,然後收取手續費。
不像博奕,莊家可以作幣就可以偷賺更多。
之後還考慮做ai之類的
前端的工作內容大多是偏向基本畫面架構,邏輯是優化使用者體驗相關的
不會是業務邏輯面。
每天下班前報告一下自己做了什麼,每週五會開一次會,討論問題是平常就會討論了。

以後規劃要做醫療相關的產品,先去取得一些data然後去看能做啥分析或是賣給別人
(法律問題先不考慮,先有data再說)
公司專案都是老闆去外面開發需求過來的。
我問有沒有用敏捷開發跟git flow ,他說公司有用簡化版的git flow 、簡化版的敏捷開發

問他們想要什麼樣的員工,他說想要不是斤斤計較加班費
會要求公司成長的員工(公司成長跟員工的成長是綁在一起的)
會有code review,前端要自己測試

【人資時間】
人資說她自學了wifi打卡系統的程式,進入公司就等於打卡了(屌== )

面試要問的問題:
1. 公司是用敏捷開發嗎?
2. 用git flow嗎?
3. 多久開一次會?
4. 會有code review嗎?
5. 前端用什麼框架?
6. 後端用的語言是哪些?
7. 公司需要什麼樣的員工?

《瑞嘉軟體科技股份有限公司》
自我介紹完之後,面試官問幾個問題
1. 解釋一下redux。它是怎麼讓react的元件更新的
(詳細流程,有沒有用中介軟體啥的…
2. Rx.js是做什麼的
3. 有沒有聽過OOP,設計模式
4. functional programming
5. react的lifecycle用了哪些
6. 怎麼用hook
7. 會不會寫單元測試
8.你有寫過TypeScript嗎?

主要做運動的,從本來的公司切出一個分支出來,所以有新的公司名子
有二個部門,一個是解決舊的煩惱,一個是維護舊的另外也要跟新的串接起來
我問他們用什麼前端框架,他說是用react,所以才找react。
公司大約四個專案,裡面有不少舊的代碼,還會有jQuery,不過沒有考慮要重構
他們的前端很多都也會後端,後端語言好像用.net 跟asp什麼的
舊部門主管問我排不排斥看到很舊的寫法,
ES5之類的,假設要改的話會用新的嗎,還是舊的?
另外還說他們一份專案可能經手過二十幾個人,
所以各種不同的寫法,一開始都是先求有就好了。
舊部門還在用SVN!!!!!!!!!!!!!!!!!
新部門的話就應該會用一些新的技術,前端一定要會寫單元測試跟什麼測試的。
工程師要on call

RD時間
有員工旅遊什麼的!
女生穿著沒特別規定
技術人員不太需要出差

 

moment.js

const yes = moment().subtract(3, 'days').startOf('day');
const no = moment().subtract(1, 'days').endOf('day');

最後面沒加 .format() 的話,出來的是物件,想要有字串或時間,要加上

.format('x');
// 1588435200000
// 顯示豪秒數
.format();
// 2020-05-05T23:59:59+08:00
// 顯示格式化後的時間