You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
RegExp.prototype.replace と正規表現 文字列を置換する際に用いる RegExp.prototype.replace は第一引数に正規表現[1]を受け取ることが出来ます。その場合第二引数には文字列か函数を渡すことでマッチした部分文字列を置き換えます。文字列を使った例が以下のようになります。 console.log("foo".replace(/foo/u, "bar")); // "bar" console.log("foo".replace(/(foo)/u, "$1 $1")); // "foo foo" console.log("foo".replace(/(?<char>o)/u, " $<char> ")); // "f o o"
Unicode エスケープシーケンス色々 UTF-16 のサロゲートペアを含む 𝒜 について考えます。これは文字列リテラルとしては次の3つの表現をすることが出来ます。 "𝒜" "\ud835\udc9c" "\u{1d49c}" 変数宣言としては次の2つの表現をすることが出来ます。 let 𝒜; let \u{1d49c}; 正規表現リテラルでは u もしくは v フラグを使った Unicode 対応モードの場合3つの表現をすることが出来ますが、そうでない場合は後方互換性を考慮して "\u{1d49c}" の場合だけ展開されないようになっています(単に \ が無視される)。 console.log(/𝒜/u.test("𝒜")); // true console.log(/\ud835\udc9c/u.test("𝒜")); // true console.log(/\u{1d
函数の length プロパティ JavaScript の函数は length プロパティが設定されるようになっています。これは函数を作った際に受け取る引数(デフォルト引数や残余引数が現れる前の引数)の数が設定されます。
Phaser 3はPhaser 2とは別物と言ってもいいくらいに多くの点が変化しました。 変更点に関してはPhaser World Issue 116に詳しいことが書いてあります。 madmimi.com 個人的に気になった変更点 その中から個人的に気になった変更点をいくつかピックアップしたいと思います。 ディスプレイツリー構造が廃止になった Phaser 2ではあるオブジェクトに別のオブジェクトを子要素として追加し、全体としてはツリーの構造にして一つの表示物を作るのが一般的でした。 Phaser 3ではそのようなことができなくなっています。ゲームオブジェクトが他のゲームオブジェクトを子要素として含むことはできず、全てのゲームオブジェクトがフラットになるようです。 この変更はかなり影響があるのではないでしょうか。Containerを使えばディスプレイツリーと同じようなことはできますが、Ph
クラスの name プロパティ JavaScript のクラスは name プロパティが設定されるようになっています。これは SetFunctionName が実行されることによるもので、通常の函数と同様に、クラス宣言、クラス式問わずに設定されます。 // クラス宣言 class Foo {} console.log(Foo.name); // "Foo" // 変数宣言でクラス式を使う const Bar = class {} console.log(Bar.name); // "Bar"
direct eval とは eval 函数を実行する際、参照される変数名が eval そのままで実行される場合を direct eval と呼び、そうでない indirect eval と区別しています。direct eval はそのスコープでの実行となりますが indirect eval は別のコンテキストで実行されます(新しく <script> タグが作られて実行されると考えるとわかりやすいかもしれません)。 globalThis.foo = "global foo"; { const foo = "shadowed foo"; // direct eval console.log(eval("foo")); // "shadowed foo" // indirect eval const indirectEval = eval; console.log(indirectEval("
この記事は、syumai Advent Calendar 2024 18日目の記事です。 まずはクイズにチャレンジ! 今回のJavaScriptクイズにチャレンジできる特設ページを作ったので、まずはこちらで遊んでみてください。 Shinyai.js 第1回 JavaScriptクイズ - https://shinyaijs.syum.ai/events/1 v0にベースを作ってもらって、@opennextjs/cloudflareを使ってCloudflare Workersにデプロイする形でホストしています。 Shinyai.jsとは? Shinyaigeekの家で行われた、ただの飲み会です。 何故か全員発表資料があったので、自分の持ってきたクイズに回答したり、それぞれのスライドを映したりしながら酒を飲んでいました。 準備不足だったために、当日に解説をちゃんと用意できていなかった問題もいく
Include the following script tag in your HTML file. <script src="https://cdn.jsdelivr.net/gh/rajnandan1/termo/dist/termo.min.js"></script> Install the package using npm. npm install @rajnandan1/termo Include / Import. import Termo from '@rajnandan1/termo'; Please note that termo is a client side library and it will not work in server side code. Sample React Code import React, { useEffect, useRef }
Internationalization is the design and development of a product, application or document content that enables easy localization for target audiences that vary in culture, region, or language. --- W3C Web Internationalization FAQ Lingui is an easy yet powerful internationalization (i18n) framework for global projects. Clean and readable - Keep your code clean and readable, while the library uses ba
ECMAScript のモジュール ECMAScript にはもともとモジュール1つをカプセル化して表現した Abstract Module Records という抽象クラスと、それを継承した Source Text Module Records 具象クラスのみが定義されていました。 Source Text Module Records がいわゆる JavaScript モジュールを表しており、ざっくり以下のような特徴を持ちます。 JavaScript のソースコードを持つ 他のモジュールと(循環可能な)依存関係を持ち、有向グラフを作る モジュールグラフから、それぞれのモジュールの実行順が定められる Cyclic Module Records の策定 WebAssembly の登場により JavaScript のソースコードを持たないが、依存グラフに参加出来るモジュールが仕様に必要となりま
Reflect.ownKeys のプロパティ列挙順 ES2015 Reflect.ownKeys は対象オブジェクトが持つ [[OwnPropertyKeys]] 内部メソッドを呼び出します。Proxy や Module Namespace オブジェクトのような Exotic Object にはそれぞれ定義された [[OwnPropertyKeys]] 内部メソッドで順番が定義されますが、普通のオブジェクトは OrdinaryOwnPropertyKeys で定義された順に列挙されます。 OrdinaryOwnPropertyKeys は以下の順で列挙します。 配列のインデックスとなりうる整数(文字列)プロパティ(array index)をその数の順番で列挙する 1 以外の文字列プロパティを作成順に列挙する Symbol プロパティを作成順に列挙する const obj = { [3]:
イテレーターの next メソッドをキャッシュする JavaScript エンジンに ES2015 の機能が入り始め、Web ディベロッパーたちがその便利さに感動していた頃の話。配列で for...of やスプレッド構文を使うのは確かに便利な一方で、単純な for 文の方が高速に実行できることが問題視されました。 原因は明白で for 文の場合は値を取り出すのにプロパティアクセスするだけですみますが、for...of やスプレッド構文の場合は値を取り出すのに毎回イテレーターの next メソッドを呼び出す必要があります。そこでパフォーマンスを改善するため、互換性の問題が起きない範囲で破壊的変更を入れる案が2つ出ました。 %ArrayIteratorPrototype%.next といったビルトインイテレーターの next メソッドを変更不可能にし、それらから値を取り出す際にエンジンの最適化
皆さんは新しく実装が進む Node.prototype.moveBefore というメソッドをご存知でしょうか、この記事ではこの新しいメソッドについて簡単な解説を行おうと思います。 新しく実装が進む Node.prototype.moveBefore メソッド Node.prototype.moveBefore() とは新しく Node インターフェースに追加されるメソッドで Node.prototype.insertBefore() と同様のシグネチャーで要素の状態を維持しつつノードの移動ができる API です。 「要素の状態を維持しつつノードの移動ができる」という表現が想像できない人もいるかもしれませんが具体的な例としては、X のこのポストに付随している動画を見ていただけるとわかりやすいかと思います。 注目していただきたい点としては、要素が左右に移動した際にアニメーションの状態が保持さ
非同期イテラブル(非同期反復可能)とは ES2018 から仕様の中に非同期イテラブルインターフェースと非同期イテレーターインターフェースが定義されています。非同期イテラブルインターフェースを実装したオブジェクト[1]のことを単に非同期イテラブル(非同期反復可能)と呼びます。 ざっくり TypeScript の型で表現すると以下のようになります(実際の TypeScript での型はジェネリクスになっています)。 interface AsyncIterable { [Symbol.asyncIerator](): AsyncIterator; } interface AsyncIterator { next(value?: any): Promise<IteratorResult>; return?(value?: any): Promise<IteratorResult>; throw?(
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く