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

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
// 顯示格式化後的時間

telegram 機器人使用

@Customize_Captcha_Bot
自訂型入群驗證
加入群組之後,記得輸入/switch
機器人才會切換到你目前的群組

接下來新增問題,在機器人那邊打 /new
1.先輸入問題:
你是什麼?
2.輸入選項:
天才
白痴
3.輸入答案:
白痴