運営元のロゴ Copyright © 2007-2026 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。
function f ( ) { do_something(); do_another(); do_one_more(); } このプログラムでは順番に3つの関数を呼び出していますが、各関数呼び出しの間でいったんスレッドの実行権を他のJavaScriptコードに渡したいとします。これは次のように、各関数呼び出しをそれぞれ別の関数に分けて、間にsetTimeoutを挿むようにプログラムを書き換えることで実現できます。 function f ( ) { do_something(); setTimeout(f1, 1); // 1ミリ秒後にf1を呼び出す } function f1 ( ) { do_another(); setTimeout(f2, 1); } function f2 ( ) { do_one_more(); } こうして書き換えた関数fを、 f(); f(); のようにし
プログラミングのこつ 無駄な名前を極力使わないこと。意味単位に名前空間を細かく階層的に分離すること。 ここで言う名前空間とは 名前空間とは、一つの名前が一意のものを表す空間。例えば、大きな目で見れば、日本語は自然言語の名前空間である。また、専門用語なども名前空間と考えることが出来る。 日本語 { コンニチワ = 挨拶 : : } 中国語 { ニーハオ = 挨拶 } 英語 { ハロー = 挨拶 } また、名前空間は重なり(優先順位)を持つ 同音異義語などの言葉は、それぞれの細かい名前空間の重なりによって一意のものに特定されると考えられる たとえば、「コイが好き」と言った場合 池に関する名前空間 { コイ = すいすいパクパク } チャライ話題に関する名前空間 { コイ = ドキドキきゅんきゅん } お茶に関する名前空間 { コイ = にがーい } 名前空間の優先順位を考えると、一意の意味を知
IE、 Firefox、 Safari ともに ECMAScript の仕様を満たしていません。IE6 は ECMAScript の仕様に対して上位互換だと言えるでしょうから、実質的に問題を抱えているのは Firefox のみ、ということになるのでしょうか。JSON を使う際には、注意が必要、と。 Firefox に関して言えば、 (Control Character があるとエラーになるのではなく読み落とすという性質からして) 仕様ではなくバグだと考えるのが妥当なのかなと思いました。 参考: テストコード 10:28 追記: NUL 文字について表に含めるのを忘れていたので追加しました 10:48 追記: Safari を追加 2009/02/17 追記: Firefox のバグは 2008 年 8 月に修正されたようです (ChangeLog の3.147)
for文の中で、カウンタ変数を利用する関数を作るとき、はじめは必ずハマるであろうことが予想できます。 私も実際にハマったことが多々あります。 本エントリーでは、for文の中で、カウンタ変数を利用する関数をジェネレートするいくつかの方法を提示したいと思います。 問題のあるコード 以下のコードがfor文の中で、カウンタ変数を利用する関数をジェネレートするコードです。for文を1から5まで繰り返し、配列の中にカウンタ変数を出力する関数を格納していきます。関数が格納された配列をさらにfor文で走査し、1から5まで出力することを意図しています。 素直にコーディングすると、まずうまくいきません。 var func_list = []; for (var i = 1; i < 6; i++) { func_list.push(function() { return console.log(i); });
QuirksBlog: The HTML5 drag and drop disaster QuirksBlogで有名なPeter-Paul Kochさんが、HTML5のドラッグ&ドロップに関して、酷くののしっている。かなり好い文章で、興味深かったので翻訳してみた。記事が長いので、blockquoteを使うのは御免を被る。 一日半もテストして、HTML5 drag and drop moduleはクソなばかりか、ゲロみてえな臭いがプンプンするってことが、いやというほど分かったね。 コイツはHTML5規格から、ソッコーで消すべきだし、もっとまともな規格が制定されるまでは、現行ブラウザは、この機能を、一刻も早く無効にするべきだ。 Web開発者は、HTML5のドラッグ&ドロップを使うな。絶対使うな。RFC2119で規定されているMUST NOTの意味で使うな。使いたきゃ、従来通りのスクリプトで実装
JavaScript の勉強を開始したときに「文字列の連結には Array.join() を使え」といった記事を見た覚えがあります(ソース失念したけど、 Operaの技術文書だった気がする ⇒ IE の技術文書だったかも)。 一年ほど信じてて、念のためベンチとってみたら「うそやーん」でした。ってお話。 ベンチの条件は、 3種類の文字列連結方法を試す 1. + Operator 2. String.concat() 3. Array.join("") 文字列の要素数を 11個 と 55個で試す <!doctype html><html><head><title></title> </head><body> <script> window.onload = function() { var now = +new Date, lp = 100; while (lp--) { job(); } d
My JavaScript book is out! Don't miss the opportunity to upgrade your beginner or average dev skills. This is a little experiment, based on single threading JavaScript behaviour and for this reason not "perfect". As You can see on top right of this blog, JPU just tell You if your operations inside this page have a cost for your CPU. For example, try to click one mini-banner on the right side (OCS
先日、「JavaScriptのオブジェクトについて考察してみた - あと味」を書いてから、chikuraさんからコメントいただいたり、id:dankogaiさんから「404 Blog Not Found:javascript - にはクラスはない」という記事で言及いただいたり、JavaScript: The Good Partsを読み返したりした結果、newについて調べたいという衝動にかられましたので、その調べた結果を書いてみたいと思います。 newを調べようと思ったキッカケを整理 まずは、そのキッカケから整理します。 chikuraさんのコメントより 押さえるべきポイントは、new演算子の際に何が行われるか?だと思うので、こちらのページもぜひ読んでみてください。 JavaScript の new 演算子の意味: Days on the Moon http://nanto.asablo.j
ECMAScript® 2025 language specification 16th edition, June 2025 This Standard defines the ECMAScript 2025 general-purpose programming language. Kindly note that the normative copy is the HTML version; the PDF version has been produced to generate a printable document. This 16th edition has been prepared under the Ecma RF patent policy. Please note that for ECMAScript Edition 4 the Ecma standard nu
JavaScriptを勉強しているとオブジェクトとはなんぞや?ということがわからなくなってきます。選択肢が増えれば増えるほど。 JavaScriptには、同じように見えて、実は同じではないデータがあります。それらのオブジェクトについて、区別して説明が付けられるように、自分なりに考察してみました。勉強中のアウトプットなので、ここで書いた内容は事実とは大きく外れているものかもしれません。とにかく不明瞭な部分を自分なりに理由づけしたかっただけです。 サンプルコードを試される場合は、FirefoxのFireBugにあるコンソールに貼りつけて実行するか、Safariの開発ツールにあるコンソールに貼りつけて実行してください。それがわからない方は console.log の部分を alert に置き換えて確認してください。 話がややこしくなるので、今回はプロパティしか扱っていません。 名称の定義について
"α".toUpperCase(); //=>"Α" "Α".toLowerCase(); //=>"α" "ω".toUpperCase(); //=>"Ω" "Ω".toLowerCase(); //=>"ω" "ψ".toUpperCase(); //=>"Ψ" "Ψ".toLowerCase(); //=>"ψ" "ա".toUpperCase(); //=>"Ա" "Ա".toLowerCase(); //=>"ա" "â".toUpperCase(); //=>"Â" "Â".toLowerCase(); //=>"â"
JavaScriptでconcatはもう使うべきではないのかもしれない (Kanasansoft Web Lab.)に早まるなとツッコミを入れる。 まず、当たり前ですがpushを使うべきところでconcatを使う理由はありません。配列に要素を追加したいならpushを使うのは当然ですね。 あえてconcatを使うのは配列を複製したい場合です。*1 で、複製する場合のベンチをとってみました。 http://ss-o.net/test/array_clone.html Firefoxは配列の長さが大きくなってくるとpushのほうが高速になる傾向が見られるものの、基本的にconcatのほうが安定して高速です。なにより、配列を複製していることが明確なconcatを使わない理由はありません。 ちなみにIE8はconcatが最適化されているらしく、上記ベンチではっきりとした差が出ます。シンプルに書いてお
jQuery 4.0 has been released! jQuery 3.x will now only receive critical updates. Find support for earlier versions at herodevs.com. jQuery API jQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers. If you're new to
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く