PC端的node是设置了时区的,但是docker安装的node默认时区是UTC时区,所以必须在代码里加上下面这一句,否则getDate()
、getDate()
、getHours()
、等函数全按照UTC时区来。
process.env.TZ = "Asia/Shanghai"
把日期格式化成字符串可以使用toLocaleString()函数,options里面可以设置时区。
const YmdHis = {
timeZone: 'Asia/Shanghai',
year: 'numeric', month: '2-digit', day: '2-digit',
hour: 'numeric', minute: 'numeric', second: 'numeric'
};
console.log(new Date().toLocaleString('zh', YmdHis))
2025/01/03 11:53:10
const Ymd = {
timeZone: 'Asia/Shanghai',
year: 'numeric', month: '2-digit', day: '2-digit',
};
console.log(new Date().toLocaleString('zh', Ymd))
2025/01/03
const His = {
timeZone: 'Asia/Shanghai',
hour: 'numeric', minute: 'numeric', second: 'numeric'
};
console.log(new Date().toLocaleString('zh', His))
11:53:10
for of
支持迭代器,支持async/await
for in
可以遍历对象。不支持迭代器,支持async/await
。
array.map
,array.forEach
不支持async/await
,这点要注意。
const someObj = {};
someObj[Symbol.iterator] = function* () {
yield 1;
yield 2;
yield 3;
};
for (const item of someObj) {
console.log(item);
}
// 1,2,3
还可以这样写:
const someObj = {
*[Symbol.iterator]() {
yield 1;
yield 2;
yield 3;
},
};
for (const item of someObj) {
console.log(item);
}
// 1,2,3
引用稍稍牺牲了一点自由度,但是避免了野指针,空指针的问题。
常用语言的赋值:
a=b
都是复制。a=&b
,是取地址。a=b
都是复制。a=&b
,是传引用。a=b
是复制。对于复杂类型a=b
是传引用。a=b
是复制。对于复杂类型a=b
是传引用。export A
export B
import {A,B} from ""
export default XXX
import AAA from ""
传统写法
step1(function (value1) {
step2(value1, function(value2) {
step3(value2, function(value3) {
step4(value3, function(value4) {
// ...
});
});
});
});
Promise 的写法
(new Promise(step1))
.then(step2)
.then(step3)
.then(step4);
async/await
let response = await fetch('/article/promise-chaining/user.json');
console.log(response);
当遇到await的时候,cpu就去执行别的任务了,当await返回的时候再继续往下执行。