JavaScript

JavaScript の map 関数の仕様がクソ

JavaScript で、wtf なコードを発見。 ['10','10','10','10','10'].map(parseInt) // 実行結果 [10, NaN, 2, 3, 4] なんだ・・・これ・・・は・・・!?

JavaScript で Scheme 作った

簡易 Scheme を JavaScript で実装した。基本的な関数の呼び出しや定義が行える。 完全に再現したわけでは無いので、Scheme 方言言語 Tetorang と呼ぶことにしよう。使用はこちら。 http://512bit.org/scheme/scheme.html Google Chrome で動きます。ぎりぎ…

JavaScript で数値判定

与えられた x が数値か、もしくは文字列での数字かどうかを調べる。数値または数字なら true. function isNumber(x){ if( typeof(x) != 'number' && typeof(x) != 'string' ) return false; else return (x == parseFloat(x) && isFinite(x)); } テスト isNu…

How to 消されない広告の作り方

数年ぶりに Proxomitron を導入して、相変わらず素敵なツールだったので今後の Proxomitroner のために現代の Web ページでどのように広告が表示されているかについて記す。 最も単純な広告 a タグで表示。 <a href="http://sample-ad.com/">絶対儲かる株100選</a> 進化系 v1 単純な a タグで広告…

数値判定する関数

JavaScript で数値判定を行う関数。isNaNは使い物にならないのでこのような関数を自前で用意する。 Array のインスタンスを弾いているのは、[1] のような引数を防ぐため。[1]を String にキャストすると "1" となり、数値とみなされてしまうのだ。 function …

isNaN関数の落とし穴

は?nullも空文字も空白も数値なの? isNaN(null) => false isNaN('') => false isNaN(' ') => false isNaN(undefined) => true というわけで入力された値が数値かどうかを調べたい時などは isNaN 関数だけではとても使い物にならないので、 trim 後に有効な…

window.onloadよりdom:loadedを使う

window.onloadはページの読み込みが終了した時点でイベントが呼び出されるため、この関数内に時間がかかる処理を置くと予想以上にページの描画が終わらない場合がある。 このイベントよりもっと速くて有用なイベントとして、dom:loaded がある。これは、ブラ…

Javascriptで同じ名前の関数を再定義

同じ空間内で同じ名前の関数を定義しても、後のほうに定義した関数が元の定義を上書きする。 コード例 function f() { alert('before'); } function f() { alert('after'); } f(); //after んでこれ実験して初めて知ったのだけど、どの時点でもf();を呼んだ…