タグ

programmingとjavascriptに関するkitsのブックマーク (37)

  • JavaScript クイズ解説: NaN === NaN の結果はどうなる?

    先日、このようなツイートを書きました。 久しぶりの JavaScript クイズ。 JavaScript において NaN === NaN の結果は次のうちどれになるでしょうか? — Takuo Kihira (@tkihira) September 7, 2021 答えは 4 の「状況によって上記以外もありうる」です。でも、2 や 3 を選んだ方も、もはや正解だといって差し支えないと思います。 解説が長くなったので、ブログ記事にまとめました。 そもそも NaN とは NaN は “Not a Number” を意味する数値です。数値なのに「Not a Number」というのは違和感があるかもしれませんが、数値表現することが出来ない状態を保持するために便宜的に用意された数値、というようなものです。 NaN は、浮動小数点演算において数値では表現出来ない計算をしようとすると登場します。例えば

  • JavaScript初級者から中級者になろう — uhyohyo.net

    このページの最終更新日:2019年7月4日 JavaScript。主にWebページを作るのに使われるほか、現在ではさまざまなところで活躍しているプログラミング言語です。 このページはJavaScriptの中級講座です。最新鋭ではないかもしれませんが、読み進めれば大抵のものを自分で作れるようになることでしょう。 言い訳とJavaScript歴史 / 問い合わせ 最近の更新2017/10/05 全ページを手直ししました。十六章第六回を追加。2017/11/9 十六章第二十一回・十六章第二十二回を追加。2017/12/2 十七章第三回・十七章第四回を追加。2017/12/3 十七章第五回・十七章第六回・十七章第七回を追加。概要コンテンツは第一篇と第二篇に分かれています。 JavaScriptは昔からWebページに動きを与えるものとして用いられてきましたが、第一篇ではそのような、昔からあるJav

    JavaScript初級者から中級者になろう — uhyohyo.net
  • 要素リストをループで回して addEventListener するみたいな、よくあるサンプルを断罪してみる - hogehoge @teramako

    function setButtonHandler () { var buttons = document.querySelectorAll(".hogeButton"); for (var i = 0, len = buttons.length; i < len; ++i) { (function(n) { buttons[i].addEventListener("click", function() { alert(n); }); }(i)); } } って感じのコードってあるじゃないですか。JavaScript で陥りがちな落とし穴を解決するみたいな感じで。 でも、これって当は良いコードじゃないよね。 (function(n) {.... }(i)) が格好わるいっていうか、毎回即時関数実行かよっていうね click のハンドラーも同じコードなのにループ数分生成しちゃってるよねー

    要素リストをループで回して addEventListener するみたいな、よくあるサンプルを断罪してみる - hogehoge @teramako
  • 呼ばれていないけど、私もコードゴルフしてみました: Days on the Moon

    集え変態プログラマ!JavaScriptの最短コードに挑んだコードゴルフ大会 in Code 2013 | DX.univ 呼ばれてないけど、ボクもコードゴルフしてみたよ - latest log Code 2013 というイベントで出されたというコードゴルフのお題「JavaScript でデジタル時計」を見ているうちに、自分でもやりたくなったので挑戦してみました。 基方針 出力が複数行にわたるなら 1 行ずつ処理していくのが素直な手ですが、このお題においてはそれだとひとつの文字に対する処理が細切れになってしまいます。 そこで、ある文字の出力処理をまとめてやってしまいましょう。行ごとにではなく列ごとに処理を進めていくのです。 20 分 方針が決まれば早速コーディング。以前、渋谷から 10 分のゴルフ場で似たようなお題「banner」に取り組んだときは三十六進数表記を使いましたが、とりあえ

  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
    kits
    kits 2013/08/07
    「正規表現をReplaceするとは思えませんが」であれば「もう古い?!」というような煽りは不要と思う。
  • ソーシャルボタンのJavaScriptでfunctionの前に「!」がついている理由 - hogehoge @teramako

    結論から言うと、単なる格好付けです。 以下説明。 主要なJavaScript (ECMAScript 5th)では、functionは2種類あります。 文(Statement) *1 式(Expression) です。 所謂、「即時関数」と呼ばれるものはfunctionは式(Expression)である必要があります。 何故なら、関数実行を示す構文であるCallExpressionが式であり、それ以外存在しないからです。*2 JavaScript コードは文(Statement)の集合 JavaScriptのコードは文の集合と言えます。いきなり式が始まることはありえません。 とはいえ、 foo(); 1 + 2; といったものは成り立ちます。これは文(Statement)の解釈としてExpressionStatement(式を書いても良い)という、文が定義されているからです。 ともかく、文

    ソーシャルボタンのJavaScriptでfunctionの前に「!」がついている理由 - hogehoge @teramako
    kits
    kits 2013/06/24
    「単なる格好付けです」/ !function(){}() で ! がどこまでに掛かるのか分かりにくいので、括弧を使う方がいいと思う。
  • TypeScript0.9alphaをNode+Gruntで使うよ

    Swift is the best programming language you should learn and make your dream app easily. Swift programming is a powerful yet easy-to-learn coding language created by Apple. It's frequently used for developing iOS and macOS applications, as well as tvOS and watchOS apps. While you can use other languages to create Apple apps, Swift is the preferred language, and it's recommended because its code is

    kits
    kits 2013/04/12
    引数によりn通りの挙動を行う関数はn個の関数に分けるべき。
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    kits
    kits 2012/10/18
    「new Functionと違って、evalは呼び出した箇所のcontextで実行される」「eval使う必然性がないならnew Functionを使ったほうが良いと思います」
  • よーし、パパ酔った勢いでJSXに盛り上がっている連中をdisっちゃうよ〜 - mitamex4uの日記

    念のため書いておくけど、俺はJSXの開発者をdisったりはしない。 俺は車輪の再発明が好きだし、何よりモノを作る人間は素晴らしい。 しかし俺は今JSXに盛り上がっている連中にとてつもなく違和感を感じている。 JSXが登場した時にはすでにHaxeがあった。 JSXは開発途上だから今後に期待するが、現時点ではHaxeの方がはるかに洗練された言語であることは間違いない。 もう一度言うぞ。現時点ではHaxeはJSXより間違いなく優れている。 俺は静的型付け言語が好きだと言った。だがな、型はプログラミングを楽にするためのものであって、型のためにプログラミングするのは嫌なんだよ。 大人が誰も言わないなら俺が言ってやる。 型推論の無い静的型付け言語はクソだ。 型推論の無い静的型付け言語をありがたがって使う奴はドMだ。 JSXは現状では型のためにプログラミングする言語だ。 でもいいんだよ。JSXはまだ出て

    よーし、パパ酔った勢いでJSXに盛り上がっている連中をdisっちゃうよ〜 - mitamex4uの日記
    kits
    kits 2012/07/23
    「JSXは開発途上だから今後に期待するが、現時点ではHaxeの方がはるかに洗練された言語であることは間違いない」
  • やっと理解できた!JSオブジェクト指向プログラミング再入門 | ゆっくりと…

    既に多くの方が JavaScript のオブジェクト指向的側面についての解説を記事にされていますが、読み手側から見ると、例えばプログラミング言語への習熟度やオブジェクト指向自体に対する理解度がマチマチなわけで、私自身、「おお、なるほど!」 っていう、頭の中のスイッチがパチンッ!と入るような境地には達していませんでした。 かつて私も オブジェクト指向なJavaScriptプログラミングのススメ なんていう翻訳記事を書いてはいるのですが、正直なところ prototype.constructor の存在は知りませんでしたし、Function.call や Function.apply をどう使えばよいのかなどをちゃんと理解できてはいませんでした。 そんな中、2011年12月に書かれた Doc Center | Mozilla Developer Network の記事 オブジェクト指向 Java

  • Google Dartがなぜ的外れなのか - やや肌寒い - ずっと君のターン

    自分の感じたことをきれいにまとめてくれてる文章があったので適当訳。 http://www.sitepoint.com/google-dart-fail/ Google Dartがなぜ的はずれなのか DartGoogleによる構造化されたウェブアプリケーションを設計するための新しい言語だ。サーバ上で動作させることもできれば、クライアント上で動かすこともできる。つまりブラウザ上で。 あなたが何を読んだかによって、GoogleDartJavaScriptの代替になることを認めていたり否定していたりするだろう。しかし、Chromeは近いうちに両方の言語が利用可能になり、選択肢が与えられることになる。もちろんGoogleは開発者たちが彼らのコントロール下にある技術を選ぶことを望んでいると私は確信している。 最初は私もDartに懐疑的でありつつも評価はより多くの情報が出てくるまで保留していた。し

    Google Dartがなぜ的外れなのか - やや肌寒い - ずっと君のターン
    kits
    kits 2011/10/19
    「Dartの大きな問題点は、JavaScriptはあらゆるところに存在するということだ」
  • jQuery で ;(function () ...と、セミコロンで始めることがあるのはなぜか - わからん

    追記 たくさん反響があって驚きました。念の為書いておくと、私はこの記事で仕組みを解説しただけで、このようなノウハウに賛成も反対もしていません。追記はここまで。 azu さんのつぶやきで知った、Dangers of anonymous function closures が、例がよいのに説明が少ないので、ここで丁寧に解説します。なぜ、 jQuery で ;(function () ...とセミコロンで始めるコードがあるのかがわかります。 次のサンプルの実行結果を想像して下さい。 var foo = function(bar) { console.log("foo"); return bar; } (function(){ console.log("bar") })(); 結果は "foo bar" を印字します。多くの場合、これは意図しない挙動だと思います。"bar" だけだと思いませんか。

    kits
    kits 2011/08/31
    なるほど。
  • JavaScriptの関数(ラムダ関数とかクロージャーとか) - hogehoge @teramako

    知ってて当然?初級者のためのJavaScriptで使う即時関数(function(){...})()の全て - 三等兵 はてなブックマーク - 知ってて当然?初級者のためのJavaScriptで使う即時関数(function(){...})()の全て - 三等兵 知ってて当然?初級者のためのJavaScriptで使う即時関数(function(){...})()の全て - 三等兵の記事を読んだ後に当記事を読むこと推奨。 ブックマークコメントを見ていて、用語の使い分けが気になったので書いておこうと思う。 無名関数かクロージャーが一般的じゃないのか?即実効関数とか使い捨て関数なんて初めて聞いた。 「即時関数」を言い表したいときに「匿名関数」とか「クロージャー」というのは不相応。 「匿名関数」 これは単に名前の付いていない関数を表す言葉であって、定義後に即実行する関数を指すとは限らない。また、記

    JavaScriptの関数(ラムダ関数とかクロージャーとか) - hogehoge @teramako
  • なぜJavaScriptで「76287755398823936」が正しく表示できないか、あるいはなぜRubyでも表せないか。 - ψ(プサイ)の興味関心空間

    Twitter住所特定実験」を開発中に気づいた事です。取得したツイートをサーバからJSONでクライアント側のJSに送る処理があって、当初この時にTwitterのツイートのIDをJSONに数値として含めて送っていました。 が、JavaScriptではこの値を受信してeval()した†1際、うまく変換することができず、たとえばChrome/Firefoxでは「76287755398823940」となり、微妙に異なった数値になってしまいました。 以下をクリックすることで、実際に実行できます。 javascript:alert(76287755398823936) IE8/9だと「76287755398823930」となり、まだ微妙に違った値になります。 ■doubleの精度の問題?? まず疑われたのはdoubleの精度の問題。一部では有名な話で、JavaScriptでは数値はすべてdouble

  • Twitter の JSON に罪はない

    TwitterのステータスIDが53bitを越えたお話 - tmytのらくがき http://d.hatena.ne.jp/tmyt/20101201/1291166929 から引用。 このうちXMLで処理してる場合は内部で64bit INTで処理していれば特に問題は起きません。 こういう微妙なまちがいをしてる人はこの記事書いた人だけでなく大勢いるようだけど、記事としてはまとまっていたので参照。 JSON という書式は、確かに JavaScript から派生したサブセットですので、 JSONを仕様書通りにパースするとidの値はdouble と考えてしまうのも無理はない気はします。 が、まちがいであるのも確かです。 RFC 4627 - The application/json Media Type for JavaScript Object Notation (JSON) http://t

    Twitter の JSON に罪はない
  • 【レビュー】JavaScriptコーディング、プチテクニック「コンマビフォア」 | エンタープライズ | マイコミジャーナル

    A Web Design Community curated by Chris Coyier. Commas Before - CSS-TricksにおいてJavaScriptコーディングにおけるちょっとしたティップスが紹介されている。一般的に採用されているコーディングスタイルとは異なっているのでトリッキーな表記に見えるが、こういう発想でコーディングすることもあるということで参考になる。似たようなコードに出会ったときに、なぜこのようなコーディングが実施されているのか理解する上で役に立つ。 JSON表記をする場合、次のような記述を採用するのが一般的だ。区切りのコンマは各行の最後に記述する。 var article = { channel: 'enterprise', subchannel: 'javascript', type: 'news' } この記述方法で犯しがちなミスは、次のように最

  • DHTML - 構造化テキストは構造化するのがやっぱ正しい : 404 Blog Not Found

    2010年09月23日02:00 カテゴリLightweight Languages DHTML - 構造化テキストは構造化するのがやっぱ正しい うーん、気にわない。 404 Blog Not Found:構造化テキストの間違ったエスケープ手法について make_link = function(href, text) { var a = document.createElement('a'); a.href = href; a.innerHTML = text; var div = document.createElement('div'); div.appendChild(a); return div.innerHTML; }; 何が気にわないって、折角作ったDOMという構造をベタテキストに戻しちゃうところ。 脱構造しない例 こうすればよいのではないか。 (function(){ v

    DHTML - 構造化テキストは構造化するのがやっぱ正しい : 404 Blog Not Found
  • 構造化テキストの間違ったエスケープ手法について : 404 Blog Not Found

    2010年09月22日21:30 カテゴリLightweight Languages 構造化テキストの間違ったエスケープ手法について 昨晩のtwitter XSS祭りは、ふだんもtwitter.comは使わない私には遠くの祭り囃子だったのですが、せっかくの自戒の機会なので。 Kazuho@Cybozu Labs: (Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について 正しいアプローチは、全てのルールを同時に適用することです。 これは残念ながら(おそらく)必要条件であっても十分条件ではありません。 こういう(かなりええかげんな)正規表現でtweetをparseしていたとします。 re_http = '(?:https?://[\\x21-\\x7e]+)'; re_user = '(?:[@][0-9A-Za-z_]{1,15})'; re_hash

    構造化テキストの間違ったエスケープ手法について : 404 Blog Not Found
  • Hatena::Engineering始めます - Hatena Developer Blog

    id:stanakaこと田中慎司です。 はてなでは、これまではてな技術勉強会日記にて、はてな社内の勉強会の資料や動画を公開してたのですが、ほぼ3年近く更新が止まってしまっていました。 今日から、この日記をリニューアルして「Hatena::Engineering」として、技術的な情報発信を再開していこうと思います。Twitterの公式アカウントは@hatenatechですので、是非フォローをお願いします。 さて、はてなでは、来週からインターンが始まります。昨年の内容は「大規模サービス技術入門」という書籍にもなっているのですが、今年は約半分の講義をUstreamで公開しようと思います。 ラインナップ(予定)は以下の通りとなっています。具体的なチャンネルなどは、確定次第、お知らせします。平日の日中になりますので、なかなかリアルタイムで見るのが難しいかもしれませんが、可能な方はリアルタイムで、そう

    Hatena::Engineering始めます - Hatena Developer Blog
    kits
    kits 2010/07/29
    8/5にcho45さん、8/6にnanto_viさんの講義。
  • 細かいJavaScriptの仕様や習慣やテク集 - 三等兵

    気づいたことやミスしたことなどメモしていたので確認作業。細かい仕様だったり暗黙のルールだったり、テクニックだったり。JSに慣れていたら当たり前なことばかりかもしらん。 追記のところはid:os0xさんより。ありがとうございます! undefined var a; alert(a) // undefined 宣言だけだとundefined。undefinedというのは、宣言している変数に値が入っていませんよ、ということ。 そしてオブジェクトには無いプロパティとか参照すると出てくる。 var a = 100; alert(a.length); // undefined さらに引数も。 function func(val) { alert(val); } func() // undefined 引数はCallオブジェクトってのに格納される。このオブジェクトはローカルの変数が格納されるオブジェクト

    細かいJavaScriptの仕様や習慣やテク集 - 三等兵