タグ

qiitaとJavaScriptに関するslay-tのブックマーク (86)

  • 岡田を切る技術 - Qiita

    これはとある回顧録 何度も諦めかけましたが、数年の歳月を経て遂に岡田を切る技術が一旦の完成へと至りました。その技術を巡る奮闘の歴史と成果について、ここに記録を残していきたいと思います。 画像時代 まずは「切る」という動作が何を指すかを明確にしておきます。 厳密な定義というよりは、切った感を得るために必要そうなふるまいとして定義します。 平面上のある領域が、任意の直線を境界として分割されること 分割された領域は物理法則に準じてふるまうこと 要するに気持ちよく岡田を切ることができれば目標は無事達成です。 物理エンジン 切った感を高めるためにはやはり「物理法則」に準じたふるまいが欲しくなります。つまりブラウザ上で動く物理エンジンが必要です。 世の中にはフルスクラッチで物理エンジンを作れる人間と作れない人間が居ると思われますが、残念ながら私は後者でした。勝ち目の薄い勝負は避け、素直に巨人の方にすが

    岡田を切る技術 - Qiita
  • 今度こそ理解できる! JavaScriptの参照が完全に分かる記事 - Qiita

    const arr1 = [1, 2, 3]; // (中略) const arr2 = arr1; arr2.push(4); // (中略) console.log(arr1); // [1, 2, 3, 4] ワイ「何や、配列を書き換えたら別の変数に入れた配列も一緒に変化したで! JavaScriptのバグやな!」 上司「バグってんのはお前の頭やろ! もう一回勉強し直さんかい!」 ※この記事は全編やめ太郎さんリスペクトでお送りする2次創作的な記事です。 参照について調べるワイ ワイ「なんや調べたら参照がどうのとか言ってる記事が出てきよるで……。よく分からんから周りの人に聞いてみよか」 同僚「参照ってのはオブジェクトのことやで(大嘘)」 上司JavaScriptの関数引数は値渡しと参照渡しがあるんや(大嘘)」 ハスケル子「参照っていうのは書き換え可能なレコードのことですよ」1 ワイ「

    今度こそ理解できる! JavaScriptの参照が完全に分かる記事 - Qiita
  • 【JS】いかがでしたか!?値渡しと参照渡しの使い分け!? - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに、の前に陳謝 要は、オブジェクトや配列の一部を変更するだけなら変数と紐づくものは変わらないし、再代入すると変わっちゃうってだけで、JSに参照渡しはないみたいです。数値でも文字列でもオブジェクトでも配列でも! ネタ記事としてお楽しみくださいませ。 っていうか、↓この記事を読んだ方がええわ!!! JavaScriptに参照渡し/値渡しなど存在しない ↓あとワイ自身も訂正記事を書いたからよろしくやで! 3歳娘「パパ、もう参照渡しの話はやめて?」 はじめに 値渡しと参照渡し。 この2つの言葉、プログラミングを勉強したことがある方なら聴い

    【JS】いかがでしたか!?値渡しと参照渡しの使い分け!? - Qiita
  • JavaScriptのES2018で追加された正規表現の新機能の検証 - Qiita

    はじめに 正規表現を使ったソースの修正をしているときにexec()やmatch()の実行結果に見慣れないプロパティgroupsを見つけました。 いつの間にかJavaScriptにも名前付きグループが実装されていたようです。 そこで軽く調べてみましたら、それ以外にもES2018において色々と追加されていたようです。 何番煎じか分かりませんが、この記事では、簡単にES2018の正規表現に関する新機能の動作を検証してみたいと思います。 厳密な定義等は、ほかの記事等を見てください。 正規表現の新機能 Named Capture Groups 従来は、 (pattern) のようにpatternにマッチしたキャプチャにアクセスするには、$1などキャプチャが現れた順番に対応する数値でしかアクセスできませんでした。 ES2018以降では、 (?<name>pattern) と書くとキャプチャに名前$<n

    JavaScriptのES2018で追加された正規表現の新機能の検証 - Qiita
  • 【2019年4月版】JavaScriptのconsoleがすごいことになってた。 - Qiita

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

    【2019年4月版】JavaScriptのconsoleがすごいことになってた。 - Qiita
  • JavaScript で陥りやすい失敗例を振り返る - Qiita

    個人的に今まで JavaScript を書いてて陥った失敗例などを振り返ってみました。 この記事にあるいくつかの失敗例については恐らく殆どの方が経験してるのではないかなと思います。 これから JavaScript 勉強するぞ!!という方や、現在進行形でこのような失敗に陥っている方の助けになれば幸いです。 コードの解説に関しては簡潔に行なっているので、気になった方はググってください。 DOM の取得及び操作 要素を取得して is-close なスタイルを付与したい。 しかし、エラーになってスタイルを付与できない // 失敗例 const hoge = document.getElementsByClassName('hoge'); hoge.classList.add('is-close'); // 正しい例 const hoge = document.getElementsByClassN

    JavaScript で陥りやすい失敗例を振り返る - Qiita
  • Vue.jsメモ:属性、ループ内呼び出し、など - Qiita

    Vue.js勉強したメモ。 まずはVue.jsのサイトにあるガイドの「はじめに」をコピペでテスト。そこからちょっとずつ変更を加えていって学んだこと。バージョンはVue.js v2.3.3です。 学んだこと: 例の{{ }}はMustache(ムスターシュ)記法と呼ぶ。 MustacheはHTMLアトリビュート(属性)には使えない。 ループ内からメソッド呼び出しは、わかってしまえば簡単。 クラスの動的変更の便利な方法。 参考ページ: Vue.jsオフィシャルページ:はじめに Qiitaの記事:Vue.jsから手軽に始めるJavaScriptフレームワーク コード(HTMLJavaScript) <div id="project-list"> active project: {{ active }} <ul> <li v-for="project in projects" v-bind:cl

    Vue.jsメモ:属性、ループ内呼び出し、など - Qiita
  • ワイ「いうても型なんて面倒くさいだけやろ?」 - Qiita

    ※登場人物等は全てフィクションです。 再就職したワイ 社長「やめ太郎くん」 ワイ「はい」 社長「今うちで開発中のブラウザゲームがあるんやけど」 社長「そのゲームの中に登場するジュースの自動販売機をプログラミングしてくれへんか」 ワイ「ええで」 社長「言語はTypeScriptや」 ワイ「・・・ええで(震え声)」 タイプスクリプト is 何 ワイ「なんやTypeScriptて」 ワイ「JavaScriptの打ち間違いか?」 ワイ「きっとそうやな」 ワイ「誰かがタイプミスで仕様書にTypeScriptって打ち込んでもうたんや」 ワイ「いわばタイポスクリプトや」 ハリー先輩「ちゃうで」 ハリー先輩「知らん言葉が出てきたからって変な妄想で自己解決したらアカンで」 ハリー先輩「なにがタイポスクリプトや」 ハリー先輩「TypeScriptは静的型付けが出来るAltJSや」 ワイ「ほえー、静的な型のある

    ワイ「いうても型なんて面倒くさいだけやろ?」 - Qiita
  • target="_blank"には気をつけよう - Qiita

    経緯 aタグにtarget="_blank"をつけると危険だよと言われたので、忘れないうちにメモメモ。 危険な理由 「リンクを開いた先のページでのJavaScriptによって、開いた元のページを操作できてしまう」 大抵のブラウザでは、 target=blank_によって"別タブで開かれたページ"が手前に表示され、 "元のページ"は裏に残る。 "別タブで開かれたページ"にて、 が実行されると、裏で"元のページ"が画面遷移される。 オリジンが違ったとしても、リンクをたどってきたユーザを任意のサイトに誘導することが可能。 ※ window.openerは、"別タブで開かれたページ"を開いた"元のページ"への参照を返すらしい。。。 window.opener フィッシング詐欺攻撃の例 リンクのへの rel=noopener 付与による Tabnabbing 対策 ESLint(eslint-plu

    target="_blank"には気をつけよう - Qiita
  • JavaScriptの‍ES2019で追加された新機能まとめ - Qiita

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

    JavaScriptの‍ES2019で追加された新機能まとめ - Qiita
  • Web会議の相手を美女に変えるブックマークレット - Qiita

    <追記> appearのドメイン変更に伴い、使えなくなりました 恐らく新しいドメインでも対応しようと思えばできますが、美女の裏におじさんが見え隠れすると悲しくなることに気づいたので、やめておきます。 ------------------------ **エンジニアって、全体的に男が多いじゃないですか。**まぁそれはそれで気楽でいいんですが、毎日男だらけの職場で男たちを見ながら打合せやってると、なんかこう、たまには綺麗なものを見たいなーなんて思うわけですよ。 特にWeb会議で1対1で話してるときは、否応なく2人で向かい合ってしまうわけで。別に仕事にストレスがなくても、この相手が綺麗なお姉さんだったらなぁ…なんて思ったり思わなかったりなわけですよ。 じゃあ、**Web会議の相手を美女に変えてしまえばいいのでは?**ということで今回は、こんなものを作りました。 作ったもの Web会議の相手を美少

    Web会議の相手を美女に変えるブックマークレット - Qiita
  • JavaScript Style Sheetをご存知ですか - Qiita

    まずはじめにお断りしておきますが、タイトルだけを見て、「Reactなどで、JavaScriptCSSを融合させる」ような技術を連想した方は…大外れです。 カレンダーのとおり、これは現代には伝わっていないロストテクノロジーです。 JavaScript Style Sheet(JSSS)とは HTML5では<style>のtype="text/css"を省略できるようになりましたが、現実問題としてブラウザで直接使う、他のスタイルシート言語は存在しないように思えます。 …と思いきや、かつてtype="text/javascript"で書くスタイルシート言語が存在しました。これが、JavaScript Style Sheet、略してJSSSです。 文法概要 現代でもJavaScriptで要素ごとにCSSを指定する際にelement.style.marginLeft = '20px';のように書け

    JavaScript Style Sheetをご存知ですか - Qiita
  • JavaScriptの概念たち (後編) - Qiita

    この記事について この記事は「JavaScriptの概念たち (前編)」の続きです。来は1つの記事なのですが、あまりにも長くなりすぎたので分割しました。 17. Prototype Chain JavaScriptには2つの特徴があります。1つは「全てがオブジェクト」でもう1つは「prototypeベースの言語だということ」です。 const hoge = { a: "hogehoge" }; console.log(hoge instanceof Object); // -> true const fuga = [1, 2, 3]; console.log(fuga instanceof Object); // -> true const piyo = new Map([[1, 'one'], [2, 'two']]); console.log(piyo instanceof Obje

    JavaScriptの概念たち (後編) - Qiita
  • JavaScriptの等値比較を全部理解する - Qiita

    皆さんこんにちは。今回の記事ではJavaScriptの等値比較について見ていこうと思います。 「どうせ==と===の違いとかだろ? 今さらそんな記事書くなよバーカw」と思った人はぜひ期待せずに読み進めてみてください。 「じゃあObject.isでしょ? 知ってる知ってる、使ったことないけど」と思った人はまあ読まなくても大丈夫です。 さて、等値比較というのは、2つの値が等しいかどうか判定することです。JavaScriptにおいて等値比較はどのように行うのか、そしてどのような場面で等値比較が発生するのかをこの記事では余すことなく紹介します。 以降、この記事で仕様書という場合はECMAScript® 2018 Language Specificationを指すものとします。 ==と=== とはいえ、まずは==と===の話をしないことには始まりません。==はJavaScript初心者がとりあえず習

    JavaScriptの等値比較を全部理解する - Qiita
  • JavaScriptの { } を理解する - Qiita

    結果はどうなったでしょうか。 自分が今使っているGoogle Chromeだとこうなりました。 結果は{a: 10}というオブジェクトです。まあ、これは当然ですね。3 + 5と入力すれば実行されて8が返ってくるのですから、{a: 10}というオブジェクトリテラルを書けば{a: 10}というオブジェクトが作られるのは当然です。 ……。 ここで、一部の人は「おいふざけんなよ」と思っているかもしれません。というのも、この例は環境によっては違う結果になるのです。具体的には、Chrome以外2のブラウザのREPL(FirefoxやEdgeなど)が該当します。あと、ts-nodeのREPLも該当するらしいです。これらの環境では、結果は{a: 10}ではなく次のようになります。 オブジェクトを作ったはずなのに結果が10とか意味不明ですね。そもそも、こんな簡単なプログラムで結果が全然違うとか、JavaSc

    JavaScriptの { } を理解する - Qiita
  • JavaScript・再帰・トランポリン - Qiita

    現状整理 JavaScript では末尾再帰最適化(PTE: Proper Tail Call) は、完全には期待できない https://kangax.github.io/compat-table/es6/ 末尾再帰による最適化 - Qiita なので再帰は注意して使わねばならない スタックオーバーフローしないことをチェック 再帰を辞めて for 文とかに何とか変換する とはいえ再帰を使いたい こともある じゃあどうするか?が稿の目的 再帰におけるスタックオーバーフローは、末尾再帰の最適化ができる他の言語でも起こりえる(例: 末尾再帰できない場合)。じゃあ、他の言語の場合どうしているかというと、トランポリンするらしい。もちろん JavaScript でもトランポリンできる。トランポリンすると、再帰が深くなってもスタックオーバーフローしない。 処方箋 ざっくりいうと以下の処方でスタックオ

    JavaScript・再帰・トランポリン - Qiita
  • VuePressはコーダーの夢を見るか。 - Qiita

    Webサービス界隈の優秀な人たちが、フロントエンドの新しいツールを「最高!」と日々謳っている中、 底辺コーダーの我々はクライアントからの修正横目に 「ほーん。どうせ僕らの業務じゃ使えないんでしょ?」という冷淡な姿勢を貫き通していた。 しかし、興味がないわけではなかった。ReactVueといったコンポーネント思考のフレームワークを駆使すればクライアントからの無理難題をスマートに解決し、家で有意義にダラダラする時間を手に入れる事が出来るかもしれない。そのような考えはいつも心の片隅にあったが目を背け続けてきた。 でもついにその時がきたかもしれない。VuePressがその夢を叶えてくれるかもしれない。 (タイトルはかっこつけただけで特に意味はないです。) 夢と苦悩 夢その1 Nuxt 夢その2 Gatsbyjs 夢その3 VuePressを使えるレベルにする。 開発のディレクトリ構成をいい感じに

    VuePressはコーダーの夢を見るか。 - Qiita
  • JavaScriptのプリミティブへの変換を完全に理解する - Qiita

    console.log(["foo", "bar"] == "foo,bar"); // true console.log([""] == 0); // true console.log((123 ^ {}) === 123); // true const obj1 = ["😂"]; const obj2 = ["😂"]; console.log(obj1 == "😂", "😂" == obj2); // true true console.log(obj1 == obj2); // false このような挙動は面白いので、Twitterとかで誰かが話題にするたびに多少は話題になります。しかしいい加減飽きたので、皆さんにはこんなの常識として理解しておいていちいち騒がないでいただきたく、この記事を用意しました。 この記事では、JavaScriptにおけるプリミティブ変換に関する仕様を

    JavaScriptのプリミティブへの変換を完全に理解する - Qiita
  • Promise と async/await の理解度をもう1段階上げる - Qiita

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

    Promise と async/await の理解度をもう1段階上げる - Qiita
  • JavaScriptで数値フォーマットする標準API「Intl.NumberFormat」 (カンマ区切り、円・ドル表記、漢数字など) - Qiita

    ほぼすべてのブラウザやNode.jsでサポートされている数値をフォーマットするAPI「Intl.NumberFormat」を紹介する記事です。 JavaScriptで数値をカンマ区切りにしたいときにGoogleで検索してみると、正規表現を使っていたり、ループで回して3桁ごとにカンマ付ける実装を紹介する記事を多く見つけました。 しかし、それらは古い記事ということもあり、2018年現在は数値のフォーマットを実装する必要はありません。EcmaScriptで仕様策定されておりほとんどのブラウザやNode.jsで使える関数があるので紹介します。 今回紹介するコードの実行結果はすべてChromeでの結果になります。 TL;DR 「Intl.NumberFormat.prototype.format」を使います。 まだChromeとFirefoxだけですが、「Intl.NumberFormat.prot

    JavaScriptで数値フォーマットする標準API「Intl.NumberFormat」 (カンマ区切り、円・ドル表記、漢数字など) - Qiita