タグ

JavaScriptに関するardarimのブックマーク (254)

  • TypeScript以外が嫌いです

    TypeScript以外が嫌いです こんにちは、TypeScript原理主義者のTakoです。今日は私がなぜTypeScript以外の言語が心の底から嫌いなのかをお話しします。 はじめに みなさん、世の中にはプログラミング言語がたくさんありますよね。JavaPythonJavaScriptRubyGo...。でも、私にとってそれらは全て「TypeScriptではない言語」というカテゴリに分類されます。つまり、使う価値のない言語です。 型がないなんて、人生がないようなもの JavaScript?あんなの型がなくて何が楽しいんですか?undefined is not a functionとかcannot read property of nullとかいうエラーと戯れるのが好きですか?私は嫌いです。 // TypeScriptの美しさ interface User { id: numbe

    TypeScript以外が嫌いです
  • あらためて理解するArrayBuffer - JavaScriptでバイナリデータを扱う方法 - ICS MEDIA

    配列(Array)との比較 JavaScriptにはTypedArrayとは別に配列(Array)の違いを説明します。 ArrayはTypedArrayと比べると柔軟で汎用性が高いです。しかし、Arrayは内部で動的なメモリー管理を行うため、データ処理や転送を高い頻度で行う場合にはオーバーヘッドが発生する可能性があります。 TypedArrayは長さが固定であり、バイト単位のデータ格納が可能なため、メモリーアクセスが効率的に行われます。数値計算においてもバイナリデータを直接操作できるので、高いパフォーマンスが期待できます。また、メモリー領域が連続しているので高速なデータの転送が可能です。 大量のデータを処理する数値計算の場合にはTypedArrayで管理するとデータのまとめた取り回しが楽になります。逆にデータの規模が小さい時は汎用的なArrayが良いでしょう。 TypedArrayは決まっ

    あらためて理解するArrayBuffer - JavaScriptでバイナリデータを扱う方法 - ICS MEDIA
  • JavaScriptがブラウザでどのように動くのか | メルカリエンジニアリング

    実際にコードを用いてスタック領域とヒープ領域の概念を説明します。 person オブジェクトを宣言した時、JavaScript エンジンはオブジェクトの実体をヒープ領域にメモリ割り当てを行い、ヒープ領域にある実体への参照をスタック領域にメモリ割り当てを行います。 const person = { name: 'Taro', age: 24 }; 次のように新しい変数(newPerson)に再代入をすると参照がコピーされ、newPerson も person もヒープ領域に割り当てられた同じ実体に対する参照を持ちます。 const newPerson = person; Object.assign を使って新しいオブジェクトを生成するのは、参照コピーをしないための方法の一つで、よく使われる手法の1つです。 function getName(person) { return person.na

    JavaScriptがブラウザでどのように動くのか | メルカリエンジニアリング
  • オラクルが所有する「JavaScript」商標登録の取り消し、Denoが米国特許商標庁に申請したと発表

    JavaScriptランタイム「Deno」の開発元であるDeno Landは、米国特許商標庁にオラクルが所有する「JavaScript」の商標登録の取り消しを申請したことを明らかにしました。 JavaScriptNetscapeがWebブラウザ用に開発したプログラミング言語であることはよく知られていますが、その名称はサン・マイクロシステムズが登録商標として所有し、同社がオラクルに買収されたことで現在はオラクルが所有しています。 Node.jsの作者であり、現在はDenoの作者であるライアン・ダール氏は、これまでに2回、2022年9月と2024年9月にオラクルに対してJavaScriptの商標を手放してほしいと公開書簡で呼びかけていました。 2回目の呼びかけの時には、次のアクションとして米国特許商標庁に取消を申請することを表明しており、今回それが実行されたことになります。 今回Denoが申

    オラクルが所有する「JavaScript」商標登録の取り消し、Denoが米国特許商標庁に申請したと発表
  • すぐ消えてしまう要素をDevToolsで確認するTips集

    はじめに こんばんは! 皆さんは以下のようなすぐ消えてしまう要素をDevToolsで確認したいときはどうしますか? 常に表示されるようにわざわざコードを修正してから、DevToolsで要素を確認したりしていませんか?DevToolsをうまく使うことで、わざわざコードの修正をせずとも簡単に要素の確認をできるのでそのちょっとしたTipsのご紹介です! ① CSSイベントでの確認方法 まずはCSSイベントで要素の表示制御を行っているパターンでの確認方法です。以下のようにCSSイベントのhoverで表示制御をしている要素を例にDevToolsで確認する方法を見ていきましょう! import "./style.css"; export const Index = () => { return ( <div> <button className="myButton">Button</button> <

    すぐ消えてしまう要素をDevToolsで確認するTips集
  • JavaScriptの非同期処理をしっかり理解する 〜async/await/Promise〜 - Qiita

    JavaScript での非同期処理について、身近な例や具体例を交えながら詳細に解説しています。 最後には練習問題も用意しています! 頑張って書いているので、良いと思ったらコメント・いいね・ストック・共有などしてもらえると嬉しいです!! 非同期処理とは 非同期処理とは、プログラムの処理が順番に実行されず、ある処理を実行している間に他の処理を並行して実行することができる仕組みです。非同期処理では、あるタスクが完了するのを待たずに次のタスクが実行されるため、効率的に複数の処理を進めることが可能です。 (by ChatGPT) 非同期処理とは、「同期処理」の対義語で、同期処理は「プログラムの処理が順番に実行され、ある処理が終わるまで次の処理を待つ仕組み」です。 非同期処理の最大のメリットは、 「時間のかかる処理を行っている間に別の処理を行うことができる」 ことです! 身近な例では、部下への仕事

    JavaScriptの非同期処理をしっかり理解する 〜async/await/Promise〜 - Qiita
  • 音を鳴らす

    JavaScriptで音を鳴らすことができます。ご自分の耳が何Hzまで聞こえるか試してみてください(23000Hzまで聞こえたというかたがおられたので24000Hzまでに増やしてみました)。 1000 Hz Stop 4000 Hz 8000 Hz 10000 Hz 11000 Hz 12000 Hz 13000 Hz 14000 Hz 15000 Hz 16000 Hz 17000 Hz 18000 Hz 19000 Hz 20000 Hz 21000 Hz 22000 Hz 23000 Hz 24000 Hz 仕組みはソースを見てください。ほぼChatGPT 4oに書いてもらいました。最初はボタンの数が少なかったこともあってChatGPTはボタン一つ一つに id を付けていたのですが、ボタンの数が増えると厄介なので、this を使ってくださいと指示したら、こうなりました。

    ardarim
    ardarim 2024/08/27
    年相応、って感じの結果になった
  • 令和のHTML / CSS / JavaScriptの書き方50選

    Web制作技術は日々進化しており、会社やプロジェクトによっては昨今の環境に適さない書き方をしているケースも時折見受けられます。 そこで今回は「2024年のWeb制作ではこのようにコードを書いてほしい!」という内容をまとめました。 質より量で、まずは「こんな書き方があるんだ」をこの記事で伝えたかったので、コードの詳細はあまり解説していません。なので、具体的な仕様などを確認したい方は参考記事を読んだりご自身で調べていただけると幸いです。 1. HTML 画像周りはサイトパフォーマンスに直結するので、まずはそこだけでも取り入れていただきたいです。また、コアウェブバイタルやアクセシビリティも併せて理解しておきたい内容です。 Lazy loading <img>にloading="lazy"属性を付けると画像が遅延読み込みになり、サイトの読み込み時間が早くなります。

    令和のHTML / CSS / JavaScriptの書き方50選
  • 【熱望】javascript の for 文で var i を宣言するのはやめて下さい - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    【熱望】javascript の for 文で var i を宣言するのはやめて下さい - Qiita
  • JavaScript Visualized - Promise Execution

    Promises in JavaScript can seem a bit daunting at first, but understanding what's happening under the hood can make them much more approachable. In this blog post, we'll dive deep into some of the inner workings of promises and explore how they enable non-blocking asynchronous tasks in JavaScript. I'm still working on making this blog better on mobile devices, mobile browsers don't always render t

    JavaScript Visualized - Promise Execution
  • JavaScript である値がオブジェクト型であることを判定する変なテク

    TC39の活動で有名なJordan Harbandが作成した下記issueで知ったのでメモ。 前提として、次のコードによって x がオブジェクト型であることを判断できる。JavaScriptにおける null は typeof の結果が "object" になるという有名な変な挙動がカバーされている。 function isObjectA(x) { return (typeof x === "object" && x !== null) || typeof x === "function"; }

    JavaScript である値がオブジェクト型であることを判定する変なテク
    ardarim
    ardarim 2024/03/25
    document.allは実装依存なのでは
  • JavaScriptの小技集 - Qiita

    はじめに 初投稿です。 知ってたら便利になる小技が無かったのでまとめました。 「小技が知りたい...だけど検索しても出てこない...!」 そういう時に役立ちます。 比較的古いバージョンのJSでは一部の小技が使えないかもしれません。 随時追加予定です。他に小技をご存じの方はコメント欄にGO。 おことわり この記事は、あくまで"こんなやり方もあるよ"と紹介しているだけなので、何でもかんでもこれらの小技を使うと、かえってコードの可読性を下げる可能性があります。コードサイズと可読性を天秤にかけてどちらが良いかを都度確認しましょう。 記事内の間違った部分の指摘等はこの記事のコメントや編集リクエストでして下さい。 当方コードゴルファーなので、バイト数短縮小技も入れていることをご了承ください(一応該当する節には*をつけています)。 配列 配列の重複した値を削除1 const meta = ["foo",

    JavaScriptの小技集 - Qiita
  • 【JavaScript】読みやすいコードの書き方 - Qiita

    はじめに 私は他人のコードをレビューしたことも自身のコードを他人にレビューしてもらったこともない初学者として現在のプロジェクトに加わりました。そこから現在までの2年間毎月10から20ほどのプルリクエストをレビューし、またチームメンバー内で読みやすいコードについて議論することで、徐々に読みやすいコードを書くためのポイントが掴めてきました。 これらの経験を通じて、私が現在考えている読みやすいコードを書くためのポイントを記事にまとめていきます✍️ 前提 言語はJavaScriptで、レガシーな環境での手続き的なJavaScriptを想定しています。 「JavaScriptの文法やメソッドは理解してきたけど、より読みやすいコードの書き方がわからない」と感じている初学者向けです。 筆者は一般的なコーディング規約や設計原則についての書籍や資料をほとんど参照していません(読んだことがあると言えばリー

    【JavaScript】読みやすいコードの書き方 - Qiita
  • "レガシー"と言われないためのJavaScript再入門

    追記: 10/11 ハテブでバズっているようで、色々指摘があったので追記 getElement*は動作が早いのでIDやクラス名が自明の場合はgetElement*を使う方がいいと言う意見もあり、また、ページの表示で大量に呼び出されるわけではないからボトルネックにはならないと言う意見もある。 getElement*で返されるオブジェクトは動的な変化に対応しており、querySelector*は動的な変化に対応していないため、場合によってはgetElement*を使うといい。このサイトで遊んでみよう。 https://ja.javascript.info/searching-elements-dom#ref-263 for await ... ofは非推奨なので Promise.allを現代的な書き方にした 顧客先のブラウザが古い場合も考慮して、あえてレガシーな書き方もする場合があるらしい。現

    "レガシー"と言われないためのJavaScript再入門
    ardarim
    ardarim 2023/10/09
    たすかる。てまも古いと言われてる方が分かりやすい場合もあるんだよな…。LINQとかに慣れないだけだけど。あと直感的な単純記法より冗長だけどself-descriptiveな方が読みやすい(個人的好み)
  • JavaScript で CPU が Intel かどうかを判定する(ついでに JIT を検知する)

    先日、次のような Tweet を見かけました TIL I discovered that TensorFlow.js uses an interesting trick to sniff your CPU architecture in WebAssembly. pic.twitter.com/LVyywIM48I — Robert Knight (@robknight_) January 4, 2023 面白かったので、なぜこうなるのかの解説と、ついでにこのテクニックを使った JIT 検知方法などについて紹介します。 JavaScript における低レイヤーの扱い JavaScript においては、挙動が比較的しっかりと仕様に定められているために、環境による振る舞いの違いはあまり発生しません。しかし、低レイヤーに降りるほど振る舞いは実装依存になり、環境差が発生する余地が出てきます。 一番

  • setTimeout の真の力、あなたは知っていますか? - Qiita

    大雑把な理解としては問題ないですが、実は setTimeout の隠された能力はそれだけではありません。 setTimeout の隠された能力を知るとどんな良いことがあるのでしょうか? 例えば、次のような良いことがあります。 ブラウザに対する理解が深まる Web サイトのパフォーマンスを向上させることができる ドヤれる まず、 ブラウザに対する理解が深まります 。 かのアリストテレスはこう言い残しました。 Knowing setTimeout is the beginning of all wisdom. ( setTimeout を知ることは、すべての知恵の始まりである) setTimeout を知ることは(ブラウザの)すべての知恵のはじまり と言って過言ではありません。 普段なにげなく setTimeout を使っていても、「実はブラウザは裏でこんなことしているんだー」という新しい知見

    setTimeout の真の力、あなたは知っていますか? - Qiita
  • JavaScript の undefined と null を完全に理解する

    JavaScript で頻出する undefined と null について語ります。 言語仕様上の違い JavaScript (ECMAScript) において、仕様上 undefined と null は当然ながら明確に区別されています。いくつか言語仕様上の扱いについて挙げてみます。 比較 厳密な比較演算子 === において undefined と null は区別されます。ゆるい比較演算子 == においては両者は区別されません(仕様 7.2.14)。 console.log(undefined === null); // false console.log(undefined == null); // true

  • JavaScriptのデザインパターンについて

    どうもoreoです。 今回はモダンなJavaScript開発環境で役立つデザインパターンを紹介します。 この記事は、JavaScript Patterns WorkshopとPatterns.devを参考にしています。 有名な「Java言語で学ぶデザインパターン入門」などでは、古典的な23個のデザインパターンが紹介されていますが、JavaScript Patterns WorkshopではPatterns.devをベースとして、モダンなJavaScriptにおける6つのデザインパターンについて言及されています。この記事ではそれらについてまとめてみたいと思います! ※記事中のコードは、JavaScript Patterns WorkshopとPatterns.devから引用させていただいております。 1 Design Patternsとは? デザインパターンとは、ソフトウェア開発で繰り返し

    JavaScriptのデザインパターンについて
  • いまどきな JavaScript に入門しよう!『流麗な JavaScript』を読んで(上) - 虎の穴ラボ技術ブログ

    こんにちは。虎の穴ラボの古賀です。 9 月の連休で社内の技術書購入を支援する制度を利用して購入した『流麗(ELOQUENT)な JavaScript 第 3 版 現代のプログラミング入門』を読みました。 流麗なJavaScriptの書影 良いでしたので、書の前半部分の概要とその中で良かったところや気になったところをご紹介します。 どんなか 基情報 オススメする読者層 著者、訳者について 構成について Chapter1〜3:プログラムの基礎的なところから、制御フロー、関数など Chapter1 Chapter2 Chapter3 Chapter4 Chapter5 Chapter6 Chapter7 Chapter8 Chapter10 Chapter11〜22:未読 良かったところ サンプルコードの実行環境や練習問題がある 初心者がつまづきがちなところについて説明がある 気になった

    いまどきな JavaScript に入門しよう!『流麗な JavaScript』を読んで(上) - 虎の穴ラボ技術ブログ
  • JavaScriptのメモリリークを検出するフレームワーク「MemLab」、メタがオープンソースで公開

    JavaScriptのメモリリークを検出するフレームワーク「MemLab」、メタがオープンソースで公開 メタ(旧Facebook)は、JavaScriptアプリケーションのメモリリークを検出するフレームワーク「MemLab」をオープンソースとして公開したと発表しました。 We’ve open-sourced MemLab. #MemLab is a JavaScript memory testing framework that automates leak detection and makes it easier to root-cause memory leaks. 1/2 https://t.co/vo6Gzv56ud — Engineering at Meta (@fb_engineering) September 12, 2022 Metaが展開しているFacebook、Fac

    JavaScriptのメモリリークを検出するフレームワーク「MemLab」、メタがオープンソースで公開