JavaScript(JS)学习笔记

日期格式化

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

引用类型

引用稍稍牺牲了一点自由度,但是避免了野指针,空指针的问题。

常用语言的赋值:

模块化

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返回的时候再继续往下执行。

posted @ 2024/09/19 06:44:52