並び順

ブックマーク数

期間指定

  • から
  • まで

81 - 120 件 / 289件

新着順 人気順

ecmascriptの検索結果81 - 120 件 / 289件

  • JavaScriptで億とか万とかに変換したいときはNumberFormatのnotation:compactが便利

    const fmt = new Intl.NumberFormat("ja-JP",{ notation: "compact", }) fmt.format(BigInt(64 ** 8) ) // => "281兆" とりあえずざっくり数値を出したいときにとても便利。最高そう。 オプションを組み合わせる 詳しくは上記MDNが詳しいが、その他オプションと組み合わせることで色々調整も可能だ // 何も設定しないといい感じに小数点計算してくれる new Intl.NumberFormat("ja-JP",{ notation: "compact"}).format(BigInt(433333333)) // => "4.3億" // 小数点表記をさせたくなければmaximumFractionDigitsを0にする new Intl.NumberFormat("ja-JP",{ notation

      JavaScriptで億とか万とかに変換したいときはNumberFormatのnotation:compactが便利
    • JavaScriptに密かに存在する“無名関数宣言”

      この記事では JavaScript エンジニアがしてしまいがちなある誤解を紹介し、それがなぜ誤解なのかを解説します。 その誤解とは、「関数宣言には必ず名前が必要である」ということです。これはexport defaultの場合に例外が存在しているため、誤解となります。 JavaScript の関数宣言 JavaScript で関数を作る方法は色々ありますが、その中でもfunctionキーワードを用いる方法は初期から存在しています。functionキーワードを用いて関数を作る場合は関数式と関数宣言の 2 つに大別されます。関数式はその名の通り式である一方で、関数宣言は文のように使用され、巻き上げ (hoisting) の挙動を持つことが特徴的です。 // 関数式 const func = function (num) { return num * 2; }; console.log(func(

        JavaScriptに密かに存在する“無名関数宣言”
      • Rust製JavaScriptエンジン『Boa JS』を試してみた

        主要なJavaScriptエンジンのTest262を毎日実行して結果を載せているtest262.fyiというサイトがあります。 (Test262とは最新のECMAScriptを実装できているかどうかのテストです。) このサイトの、2024/6/5現在の実装率ランキングはこちらです。 test262.fyiの画面キャプチャ(2024/6/5) V8(ChromeやNode.js、Deno等)、JavaScriptCore(SafariやBun等)、SpiderMonkey(Firefox等)という、大手エンジンとほぼ横並びで4位に食い込んでいるBoaとは何者でしょうか。 Boaは公式曰く『Rustで書かれた実験的なJavascriptのレキサー、パーサー、コンパイラー』です。これだけ揃えば、JavaScriptエンジンと言って差し支えないと思います。RustアプリケーションにJavaScri

          Rust製JavaScriptエンジン『Boa JS』を試してみた
        • JavaScriptのIterator / Generatorの整理

          目的と対象読者 IteratorとIterableとGeneratorとGenerator Functionの区別が曖昧な人 (記事前半) Generatorの制御フローを完全理解したい人 (記事後半) の理解を深めるための記事です。 まとめ IteratorとIterableの関係 Iteratorは狭義には呼び出し元の next 呼び出しに応じて要素を出力するインターフェースである。 IterableはIteratorを生成するインターフェースである。 IterableだからといってIteratorとは限らず、IteratorだからといってIterableとは限らない。しかし実際には多くのIteratorはIterableのインターフェースも実装している。 Iterableとコレクションは相互変換可能である。 Iterableは for-of ループで処理できる。 IteratorとG

            JavaScriptのIterator / Generatorの整理
          • Operator Lookup - Search JavaScript Operators

            Are you a human? If so, please ignore this checkboxWant to know when I publish new content?Enter your email to join my free newsletter: Email

              Operator Lookup - Search JavaScript Operators
            • DenoがJavaScriptの標準化を行うTC39ワーキンググループに参加を発表

              Node.jsの作者であるライアン・ダール(Ryan Dahl)氏が新たに立ち上げ、サーバサイドでJavaScript/TypeScriptを実行するためのオープンソースのフレームワーク「Deno」と、その分散ホスティングである「Deno Deploy」を提供する「Deno Company」はECMAインターナショナルに加盟し、JavaScriptの標準化を行うTC39ワーキンググループに参加することを発表しました。 Deno has joined @EcmaIntl's @tc39: the JavaScript standards committee.https://t.co/meFUKD5KKG — Deno (@deno_land) December 13, 2021 DenoはTC39ワーキンググループの参加によって、JavaScriptを誰にとってもよいものに改善していくととも

                DenoがJavaScriptの標準化を行うTC39ワーキンググループに参加を発表
              • TypeScript 5.5 で追加された正規表現構文チェックを理解する

                TypeScript 5.5で、@graphemeclusterさんによって正規表現リテラルの構文チェックが導入されました🎉 この構文チェックによって、正規表現に間違いがあった場合、事前にTypeScriptがエラーを出力してくれます。 この機能について、次のことが気になったので調べてみました。 どんな構文がエラーになるか なぜ導入されたか どうやってチェックしているか JavaScriptで実行できるがTypeScriptでエラーになる構文はあるか ESLintとのカバー範囲の違い 本記事に関して、誤り等があれば指摘いただけると嬉しいです。 どんな構文がエラーになるか TypeScript 5.5では、正規表現に関するエラーメッセージが40個程度追加されています。 例えば、下記のような構文は、5.5でエラーになります。 // 存在しないフラグ var re = /a/b; // エラー

                  TypeScript 5.5 で追加された正規表現構文チェックを理解する
                • ES2022 と TypeScript 4.5 に入るプライベートフィールドのための in 演算子について | サイボウズ フロントエンドエキスパートチーム

                  2021年7月に行われた TC39 ミーティングで Ergonomic brand checks for Private Fields というプロポーザルが Stage 4 になりました。 このプロポーザルは、ES2022 に含まれる予定です。また、TypeScript 4.5 にも含まれる予定です。 この記事では、Ergonomic brand checks for Private Fields について解説します。 概要 Ergonomic brand checks for Private Fields は、in 演算子を使ったプライベートフィールドの有無の判定を可能にするプロポーザルです。 現在の in 演算子 in 演算子は、オブジェクトが特定の名前のプロパティを持っているかどうかを判定するための二項演算子です。 左辺にプロパティの名前、右辺にオブジェクトを受け取ります。 新しい

                    ES2022 と TypeScript 4.5 に入るプライベートフィールドのための in 演算子について | サイボウズ フロントエンドエキスパートチーム
                  • Node.js の import.meta.resolve について

                    先日 import.meta について調査して人に話す機会があり HTML(Web) と Node.js の各ホストの import.meta がどのようなオブジェクトを返すのかを調査していた。そのときは、「HTML でも Node.js でも import.meta.url だけが生えていて〜〜」という話をしてしまった。 後になって知ったのだが、Node.js には import.meta.url 以外にも import.meta.resolve というプロパティが実装されている。 この記事では Node.js に実装されている import.meta.resolve について解説する。 なお、import.meta.url はまだ Stability 1 の API なので、今後仕様が変わる可能性があることに注意してほしい。 import.meta について まず import.met

                      Node.js の import.meta.resolve について
                    • ES2021に対応したJavaScript Primer 3.0を公開しました - JavaScript入門

                      JavaScript入門書のJavaScript Primerのウェブ版をアップデートして、2021年の最新の仕様であるES2021に対応しました。 JavaScript Primerのウェブサイトから閲覧できます。 ウェブサイト: https://jsprimer.net/ リリースノート: Release 3.0.0: ECMAScript 2021対応 · asciidwango/js-primer 対応のサマリIssue: ES2021の対応 · Issue #1220 · asciidwango/js-primer JavaScript Primerについて JavaScript Primerは、これからJavaScriptを学びたい人が、ECMAScript 2015以降をベースにして一からJavaScriptを学べる書籍です。 ECMAScriptの仕様は毎年アップデートされ

                        ES2021に対応したJavaScript Primer 3.0を公開しました - JavaScript入門
                      • Intlの今までとこれから

                        JSConf JP 2023 : 2023/11/19 - https://jsconf.jp/2023/talk/ryusei-sajiki-1/

                          Intlの今までとこれから
                        • typescript-eslintで新しい構文をサポートする

                          新しい構文がやってくる ご存知の通り、JavaScript の標準仕様である ECMAScript では毎年新しい記法や構文が提案され、採択されています。もちろん JavaScript のスーパーセットである TypeScript もその例外ではありません。 TypeScript では基本的に ECMAScript Proposal の Stage3 になった仕様から順次サポートするという方針があります。最近であれば v5.0 に入った Decorators や v5.2 で導入される using Declarations(Explicit Resource Management)などが該当します。 ここまでのことは普段 TypeScript を利用している方であれば知っている方も多いでしょう。しかし実際に TypeScript で新しい構文がサポートされた後、typescript-esl

                            typescript-eslintで新しい構文をサポートする
                          • JavaScript: 最初の 20 年 (翻訳) - inzkyk.xyz

                            翻訳について これは Allen Wirfs-Brock, Brendan Eich 著 JavaScript: the first 20 years の翻訳です。英語版は CC BY 4.0 ライセンスで公開されています。 この翻訳は CC BY 4.0 ライセンスの許諾に基づいて公開されます。 PDF/EPUB 版について この翻訳の PDF/EPUB 版を BOOTH で販売しています。

                              JavaScript: 最初の 20 年 (翻訳) - inzkyk.xyz
                            • sosukesuzuki.dev

                              2024 2024-08-19: WebKitのコミッターになった 2024-08-12: 文字列リテラルから不要なエスケープを取り除くのってリンターの責務かも 2024-08-09: WebKitにWasm Type Reflection API(の一部)を実装してみた 2024-07-07: Intlにおけるロケール識別子のマッチング 2024-06-05: プライベートでMac使うのやめた 2024-03-26: ECMAScript の Set Methods プロポーザル 2023 2023-12-29: 2023 年振り返り 2023-11-13: 【翻訳】Prettier の新しい三項演算子のフォーマットを試してみてください 2023-07-26: Prettier 3.0 をリリースしました 2023-05-27: フレームグラフを眺めて無駄な正規表現を消してPrettie

                                sosukesuzuki.dev
                              • プロトタイプ汚染周りの提案と primordials.js

                                はじめに この記事では TC39 のプロトタイプ汚染周りの提案、そしてグローバルやプロトタイプのプロパティ変更に耐えるためのコードである primordials.js について紹介します。 プロトタイプ汚染とは JavaScript はプロトタイプベースの言語です。どのオブジェクトもプロトタイプ([[Prototype]] 内部スロット)を持っており、それを辿ることで継承を表現します(プロトタイプチェーン)。 JavaScript では基本的にどのオブジェクトも凍結されておらず、好きにプロパティを追加していくことができます。かつて Prototype JavaScript Framework や MooTools というライブラリが広く使われ、ビルトインオブジェクトのプロトタイプに独自のメソッドを追加して Web サイトを開発していました。しかしオブジェクトが直接所有するプロパティとプロト

                                  プロトタイプ汚染周りの提案と primordials.js
                                • Vite 3 が採用した CJS Proxy による Dual Package 構成

                                  2022 年現在、Node.js 界隈は ESM (ES Module) への移行の過渡期であり、特に既存プロジェクトにおいては CJS (CommonJS) 構成であることがまだまだ多い。また、Pure ESM な npm パッケージは、CSJ プロジェクトからの利便性が悪く、dynamic import が必須で非同期化を強いられたり TypeScript の設定変更が必要だったりと面倒が増える。 そんな状況のため、広く使われたい npm パッケージを公開する場合、importでもrequireでも利用できるよう dual package 構成を取りたくなるが、定番手法が確立しているとは言えず、意外と面倒が多い。よく見るのは、tscやesbuild等で ESM 用と CJS 用の設定ファイルを用意してそれぞれ別ディレクトリに出力し、パッケージに両方同梱して conditional ex

                                    Vite 3 が採用した CJS Proxy による Dual Package 構成
                                  • ECMAScript2020言語仕様 私的日本語訳

                                    このページはECMAScript® 2020 Language SpecificationをJavaScriptの学習目的で私的に日本語訳したものであり、直訳と意訳および推測が混在しています。そのため内容については正確でない可能性があります。正確な情報を知りたい場合は、原文をご覧ください。また一部訳者によるコメントが含まれていることがあります。※このサイトの内容で損害や不利益を受けたとしても当方は一切の責任を負いません。

                                    • Object.assign({}, obj) と { ...obj } の違い - Qiita

                                      オブジェクトリテラル内のスプレッド構文は、ES2018で追加されたたいへん便利な構文です。特に、{ ...obj }という形のコードでオブジェクトをコピーするのはJavaScriptプログラミングでは極めて頻出です。 スプレッド構文が無かった時代はObject.assign({}, obj)として同様のことを達成していた方も多いと思われます。Object.assignはES2015から使用可能でした。 では、この2種類の方法は同じでしょうか。タイトルにもある通り、もちろん違います。今回は、この違いに触れている日本語資料がMDN日本語版で一瞬触れているくらいしか無かったので記事にまとめました。 結論 最初に結論を述べると、Object.prototypeが汚染されていた場合にのみ違いが発生します。特に、Object.prototypeにsetterを持つプロパティ名が存在し、そのプロパティ名

                                        Object.assign({}, obj) と { ...obj } の違い - Qiita
                                      • ECMAScript仕様を読むのに必要な知識 - ダイジェスト版

                                        Practical Tips for Bootstrapping Information Extraction Pipelines

                                          ECMAScript仕様を読むのに必要な知識 - ダイジェスト版
                                        • TypeScript3.8以降のECMAScript private fieldについて - abcdefGets

                                          現状targetがesnextじゃないならあまり使わないほうがよい Reason 以下のようなシンプルなケースを考える。 class A { #field = 1; something() {return this.field;} } targetがesnext以外だと var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return privateMap.get(receiver); }; var _field; class

                                            TypeScript3.8以降のECMAScript private fieldについて - abcdefGets
                                          • ECMAScript Module Harmony

                                            Module Harmony とは 現在 TC39 で多くのモジュール機能を追加する提案が進行しています。かつてはそれぞれの提案が無秩序に進行していましたが、2023年5月に Module Harmony として整理されました。この記事ではそれら提案についてまとめようと思います。 モジュール提案仕様の依存関係 インポートフェーズ修飾子 モジュールの読み込みがフェーズに分けられ、それぞれに対して修飾子が提案されています。シンタックスとしては import の後ろに修飾子を付けます。 import <Modifier> <ImportBinding> from <ModuleSpecifier>; import.<Modifier>(<AssignmentExpression>); モジュールの各フェーズと修飾子の対応 アセット参照 URL やパス解決のみをするのがアセット参照です。Asset

                                              ECMAScript Module Harmony
                                            • Parsing Javascript

                                              The document provides an in-depth look at the process of parsing in Javascript. It explains parsing as the transformation of a programming language desc…

                                                Parsing Javascript
                                              • TC39 に新設された Stage 2.7 について | blog.jxck.io

                                                Intro TC39 の Stage 2 と Stage 3 の間に、新たに Stage 2.7 が追加された。 これは何だろうと思った人が検索で辿り着けるよう、その経緯と目的をまとめる。 TC39 Stages TC39 は、 ECMAScript (つまりまあ JS) の新機能を議論する Task Group だ。 ここでは、比較的自由に新機能の提案がなされ、定期的に行われるミーティングでの議論や、実装からのフィードバックを経て、 Stage が上がっていく仕組みをとっている。 旧来の Stage は 0~4 まであった。ざっくり言うと以下のようなものだ。

                                                  TC39 に新設された Stage 2.7 について | blog.jxck.io
                                                • TC39 - JavaScriptを定義する。

                                                  JavaScriptを定義する。 TC39 Ecma InternationalのTC39は、JavaScript開発者、実装者、専門家などのグループで、JavaScriptの仕様をメンテナンスし発展させるためにコミュニティと協力しています。 我々は 所属の委員会です。 コントリビュート 既存のプロポーザルに対するフィードバック、ドキュメントの改善、テスト、実装、さらには言語機能に関するアイデアなど、JavaScriptコミュニティからのコントリビュートをTC39は歓迎します。詳細については、コントリビュータガイドをご覧ください。 TC39のミーティングにメンバーとして参加するには、Ecmaに参加してください。 仕様 我々はJavaScript(正式には、ECMAScript)の仕様をGitHub上で開発し、2ヶ月ごとにミーティングを行い、プロポーザルについて議論しています。このプロセスの

                                                  • JavaScript/TypeScriptからWebAssemblyやネイティブバイナリを生成するコンパイラ「Porffor」の開発が加速へ、開発者がフルタイムで取り組み

                                                    「Porffor」は、JavaScript/TypeScriptをWebAssemblyバイナリやネイティブバイナリへとコンパイルする実験的なツールであり、これまでにない2つの特徴を備えています。 1つ目はJavaScript/TypeScriptをコンパイルしてWebAssemblyバイナリやネイティブバイナリを生成しようとしている点です。 これまでもJavaScript/TypeScriptをWebAssemblyに変換するツールは存在していましたが、JavaScriptのコードとWebAssembly版のJavaScriptエンジンを1つにパッケージングするという手段で実現していました。 実行時には、パッケージ内部のJavaScriptコードをWebAssembly版JavaScriptエンジンで実行していたのです。そのため生成されたバイナリの大きさは比較的大きく、また実行速度はあく

                                                      JavaScript/TypeScriptからWebAssemblyやネイティブバイナリを生成するコンパイラ「Porffor」の開発が加速へ、開発者がフルタイムで取り組み
                                                    • JavaScriptの識別子に中黒が使えるようになった: Days on the Moon

                                                      JavaScriptの識別子(変数名、関数名、プロパティ名など)の2文字目以降に中黒「・」(U+30FB KATAKANA MIDDLE DOT)が使えるようになりました。以下のコードはChrome 124では構文エラーになりますが、Chrome 125では問題なく実行できます。 const シン・ゴジラ = 2016; JavaScriptの識別子 中黒が使えるようになったのは、JavaScript(ECMAScript)の仕様が変わったからではありません。変わったのはUnicodeの仕様のほうです。Unicode 15.1.0(2023年9月)においてOther_ID_Continueプロパティ(を持つ文字の集まり)に中黒が追加されました。 そもそもJavaScriptの識別子に使える文字は、Unicodeを参照して定義されています。ECMAScript 2023(2023年6月)では

                                                      • ECMAScriptの最新動向 2022年06月版 | サイボウズ フロントエンドエキスパートチーム

                                                        この記事では2022年06月06日~09日に開催された TC39 meeting 90th で議題に上がったプロポーザルを紹介します。 For Stage 4 findLast / findLastIndex Stage 4 に到達しました findLast と findLastIndex は、Array.prototype.find と Array.prototype.findIndex の逆から走査するバージョンです。 const arr = [ { prop1: 1, prop2: "foo" }, { prop1: 1, props2: "bar" }, ]; const obj1 = arr.find((element) => element.prop1 === 1); console.log(obj1.prop2); // "foo" const obj2 = arr.find

                                                          ECMAScriptの最新動向 2022年06月版 | サイボウズ フロントエンドエキスパートチーム
                                                        • Intl.Segmenterはどうやって単語分割しているのか

                                                          Intl.Segmenter についておさらい JavaScript には Intl と呼ばれる国際化 API があり、日時や数値のフォーマットを始めとする国際化に便利な機能が揃っています。Intl.Segmenter はこの Intl の一機能で、文字・単語・文章単位での文字列分割を可能にします。 文字単位での分割では複数のコードユニットやコードポイントを持った文字を考慮し、正確に見た目上の1文字(書記素)で分割できるので、絵文字を含んだ文字数のカウントなどに便利です。 const segmenter = new Intl.Segmenter("ja", { granularity: "grapheme" }); console.log("🇯🇵👨🏻‍💻".length); // ❌ 11 console.log([..."🇯🇵👨🏻‍💻"].length); // ❌

                                                            Intl.Segmenterはどうやって単語分割しているのか
                                                          • Pure ESM package

                                                            esm-package.md Pure ESM package The package that linked you here is now pure ESM. It cannot be require()'d from CommonJS. This means you have the following choices: Use ESM yourself. (preferred) Use import foo from 'foo' instead of const foo = require('foo') to import the package. You also need to put "type": "module" in your package.json and more. Follow the below guide. If the package is used in

                                                              Pure ESM package
                                                            • カリー化と部分適用

                                                              カリー化と部分適用 先日同僚にカリー化を説明する機会がありました。その際に、簡潔に説明に適した自分用の資料があるといいなと思いましたので、こちらの記事を書くことにしました。 この記事ではカリー化と部分適用について解説します。歴史等には触れずにただその内容について述べます。 混同しやすいという情報があるのですが、割と違うレイヤの話なのでなぜなのかは不明ですが、関連性に関する私見も末尾に書いておきます。 カリー化 カリー化 (Currying)[1]とは 複数の引数を取る関数を、単一の引数を取る関数に翻訳する手法 のことです。 簡単な例を見ます。以下のような2つの引数を持つ関数を考えます。 const add = (a: number, b: number) => a + b; console.log(add(1, 3)); // 4 関数を値のように返す関数のことを高階関数と呼びます。 カリ

                                                                カリー化と部分適用
                                                              • Why does JavaScript's parseInt(0.0000005) print "5"?

                                                                I've read an article about JavaScript parseInt, which had this question: parseInt(0.5); // => 0 parseInt(0.05); // => 0 parseInt(0.005); // => 0 parseInt(0.0005); // => 0 parseInt(0.00005); // => 0 parseInt(0.000005); // => 0 parseInt(0.0000005); // => 5 Why is this happening?

                                                                  Why does JavaScript's parseInt(0.0000005) print "5"?
                                                                • なぜ import.meta.url は URL オブジェクトではなく文字列なのか | サイボウズ フロントエンドエキスパートチーム

                                                                  数多くの Node.js ライブラリの作者として知られる Sindre Sorhus 氏が次のようなツイートをしていた。 Why is `import.meta.url` a string and not a `URL` instance? — Sindre Sorhus 💙💛 (@sindresorhus) July 24, 2022 これを見て私も理由が気になったので調査してみた。 先にまとめ URL の仕様にそうすべきと書いてあるから。 普通に考えると? まず最初に思いつくであろうものが「import.meta.urlはECMAScriptの仕様だが、URLオブジェクトはHTMLの仕様に含まれるため、仕様間のそういった参照はできない」という理由である。 実際 Twitter 上ではそのように考えている人もいた。 しかし、それは誤りである。 ECMAScriptのimport.me

                                                                    なぜ import.meta.url は URL オブジェクトではなく文字列なのか | サイボウズ フロントエンドエキスパートチーム
                                                                  • ESM>CDN

                                                                    Create modern(es2015+) web apps easily with NPM packages in browser/deno.No build tools needed!import confetti from "https://esm.sh/canvas-confetti@1.6.0" esm.sh is a modern CDN that allows you to import es6 modules from a URL: import Module from "https://esm.sh/PKG@SEMVER[/PATH]"; or build a module with custom input(code): import { esm } from "https://esm.sh/build"; const { render } = await esm`

                                                                      ESM>CDN
                                                                    • A New RegExp Engine in SpiderMonkey – Mozilla Hacks - the Web developer blog

                                                                      Background: RegExps in SpiderMonkey Regular expressions – commonly known as RegExps – are a powerful tool in JavaScript for manipulating strings. They provide a rich syntax to describe and capture character information. They’re also heavily used, so it’s important for SpiderMonkey (the JavaScript engine in Firefox) to optimize them well. Over the years, we’ve had several approaches to RegExps. Con

                                                                        A New RegExp Engine in SpiderMonkey – Mozilla Hacks - the Web developer blog
                                                                      • JavaScriptの識別子

                                                                        JavaScriptの識別子として使えるもの・使えないものに関して整理しました。 識別子、予約語、キーワード ECMAScriptでは識別子、予約語、キーワードを以下のように使っています 識別子 (identifier) とは、ざっくり言うとローカル変数名に使える名前のことです。が、この定義は細かいことを言うと状況によってぶれがあり複雑です。これを細かく見ていくのが本記事の主眼です。 例: foo 規格上は Identifier がこれに相当しますが、様々な例外を勘案するとこれをそのまま使うのが自然とは言えないため、以降では微妙に異なる定義を採用します。 予約語 (reserved word) とは、識別子と同じ形式であるにも関わらず識別子としては使えないもののことです。 例: if, public (strict modeの予約語だが、使い道はない) 非例: async (識別子として自

                                                                          JavaScriptの識別子
                                                                        • コードフォーマッタ「Prettier 3.0」がリリース。すべてのソースコードをECMAScriptモジュールに変更

                                                                          「Prettier 3.0」では、すべてのソースコードをECMAScriptモジュールを使用する形式へ移行しており、この変更によって開発エクスペリエンスを大幅に向上している。なお、Prettierをライブラリとして利用する場合は、CommonJSとしても利用できる。 おもな変更点としては、中国語、日本語、韓国語における空白の処理を改善し、これまで行っていた中国語や日本語と西洋の文字や数字との間へのスペースの挿入が行われないようになった。 さらに、中国語と日本語における特定の文字を行頭または行末に使用しない、というルールを順守するよう変更されるとともに、韓国語において単語内での改行が行われないよう修正されている。 また、プラグインの非同期パーサがサポートされるようになったほか、ESMにおけるprettier.config.js、.prettierrc.js、prettier.config.m

                                                                            コードフォーマッタ「Prettier 3.0」がリリース。すべてのソースコードをECMAScriptモジュールに変更
                                                                          • ECMAScript Record & Tuple polyfill はどのようにして実装されているのか | Wantedly Engineer Blog

                                                                            Record & Tuple とはRecord & Tuple は ECMAScript (JavaScript) に対する提案段階の機能で、構造化データのためのプリミティブ型を提供するというものです。RecordはObjectのプリミティブ版、TupleはArrayのプリミティブ版にあたります。 プリミティブとオブジェクトJavaScriptにおける値はプリミティブとオブジェクトの2種類に分けられます。 プリミティブはイミュータブルで、値の同等性にもとづいて比較されます。既存のプリミティブとして、null, undefined, number, string, boolean, bigint, symbol が存在しています。オブジェクトはデフォルトでは書き換え可能で、参照の同一性にもとづいて比較されます。これまで、複数のスカラー値をまとめて構造化データとして扱うには、オブジェクト (主

                                                                              ECMAScript Record & Tuple polyfill はどのようにして実装されているのか | Wantedly Engineer Blog
                                                                            • Hello, Modules!

                                                                              It has already been available for some time in modern browsers, but we can now finally use it in Node.js, thanks to Node.js 10 becoming obsolete. As I wrote about earlier this year, I have personally been waiting for this day for 10 years. Here’s a good overview of JavaScript Modules. What are the benefits of JavaScript Modules over CommonJS?Unified syntax. Helps with teaching.Browser compatibilit

                                                                                Hello, Modules!
                                                                              • ブラウザにおける ES Modules の利用とパフォーマンスについて - 30歳からのプログラミング

                                                                                現代の主要なブラウザでは、ES Modules(以下、ESM)を利用することができる。 つまり、import文やexport文を使った JavaScript ファイルを、トランスパイルすることなくそのまま使えるということである。 モジュールシステムをそのまま使えるので、複数のファイルをバンドルする必要もない。 この記事ではまず、ブラウザで ESM を使う方法について説明していく。 その後、処理の流れを詳しく確認していく。これを理解していないと、パフォーマンスが非常に悪いページになってしまう恐れがある。 動作確認は Google Chrome の84.0.4147.105で行っている。 ESM 利用の基本 まずは検証用にサーバを立てる。 以下のコードを Deno(バージョンは1.2.2)で実行する。 そうすると、http://localhost:8080/にアクセスしたときにindex.ht

                                                                                  ブラウザにおける ES Modules の利用とパフォーマンスについて - 30歳からのプログラミング
                                                                                • Understanding the ECMAScript spec, part 1 · V8

                                                                                  Show navigation All episodes In this article, we take a simple function in the spec and try to understand the notation. Let’s go! Preface #Even if you know JavaScript, reading its language specification, ECMAScript Language specification, or the ECMAScript spec for short, can be pretty daunting. At least that’s how I felt when I started reading it for the first time. Let’s start with a concrete ex

                                                                                  新着記事