開発部

最近知ったJavascriptまわりのこと

開発のAHです。

最近はAIさんにばかりコードを書かせていてるためあまり新しいことを探すようなことをしていない印象です。
ブログのネタにも困っていたのでとりあえずAIさんになんかJavascript界隈で新しいことはない?と聞いてみました。

・structuredClone
オブジェクトの完全コピーが簡単に出来るようになったようです。

今までは

const obj = { name : ‘hoge’, type : 1 };
//コピーしたと思ってしまうやつ
const tmp_obj = obj;
//代入
tmp_obj.type = 2;
//出力
console.log(obj.type); // 結果は2

という感じでjavascriptの仕様上、objのメモリのアドレスの参照を渡す形になるので元のobjへ代入が可能に。
structuredCloneを使うと簡単にコピーが可能という。

const obj = { name : ‘hoge’, type : 1 };
//コピー
const tmp_obj = structuredClone(obj);
//代入
tmp_obj.type = 2;
//出力
console.log(obj.type); // 結果は1
console.log(tmp_obj.type); // 結果は2

何がいいかと言われると勘違いが減るってところかなと。
javascriptでバイナリとか使うと初心者な私はつまずきました。
コピーされてなくてちょっと痛い目を見た思い出。
しかしこれからはそういうことが減るのでとてもいい機能だと思います。

・Temporal
次世代規格のようですがJavascriptで日付まわりがまともになるらしい。
日付のめんどくささは折り紙つきのJavascriptなので使えるようになると楽になるんだろうか。
とはいえChromeでも対応してないという話でDebugがNode.jsからしか使えないとか。

const { Temporal } = require(‘@js-temporal/polyfill’);
console.log(Temporal.Now.zonedDateTimeISO().toString());

でタイムゾーンやらいろいろ入ったタイムスタンプが出てきます。

Temporal.Now.plainDateTimeISO().toString();

ただの日付欲しい場合にはこっちを使った方が良さそうです。
日付ライブラリが無くなって標準になってくれると使いやすいんですが。
あともっと早く欲しかったこういう機能。

という感じでチラホラ新しい機能が増えているんですねJavascript。
また次の機会にAIさんに聞いてみたいと思います。

文:開発AH