タグ: JavaScript

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JavaScriptでJIS丸め

前回、ExcelでJIS丸め等々を実装したので、余勢を駆ってJavaScriptでも実装したのでメモ。

ECMAScriptの仕様書によると、JavaScriptのMath.floor(), Math.ceil(), Math.round()は負の無限大(-∞)や正の無限大(+∞)に丸める実装になっているので、ゼロに近づける一般的な切り捨て、ゼロから遠ざかる一般的な切り上げ、ゼロから遠ざける一般的な四捨五入もメモ。

続きを読む

スポンサーサイト

[JavaScript] UUID.js を更新しました!

以前公開したまま放置していたJavaScript用のUUID生成ライブラリ、UUID.jsの最新バージョンを公開しました!

大幅な機能追加とバグ修正が行われて、ホスティング先もCodeReposからGitHubに変更されました!

LiosK's UUID.js at master - GitHub

UUID.js: The RFC-compliant UUID generator for JavaScript.

↓こんな感じのRFC 4122に準拠したUUIDをJavaScriptで簡単に生成することができます!

368606ed-98b5-11df-8fd2-0ba59ea365b9

UUIDは大量に生成しても重複が起きないように工夫されているので、中央で統制を取らなくとも一意のIDを生成できて何かと便利です!

使用例や動作サンプルは続きで!

続きを読む

[JavaScript] newは大事だよ!

JavaScriptのnewって何?一体何なの?という話 - 愛と勇気と缶ビール

クラスってものはJavaScriptにはないはずなのに、 new ClassName();と書くとあたかもClassNameクラスのオブジェクトのインスタンスが生成され、それが返ってくるかのような挙動をしている。

これは気持ち悪い。言語仕様としてはクラスは本来存在しないのに、クラスのようなものが導入されている。まともな神経を持った人間なら、一体 new演算子って何なの?という疑問を持つのが当たり前である。

こんな扱いを受けているnewがあまりにも不憫で涙した><

newはprototype-basedなJavaScriptを書くための唯一の手段[1]で、真にJavaScriptらしいコードを書くためには欠かすことができないものなのに><

ということで、newを擁護するためのエントリーをポスト。

続きを読む

乱数の精度を調べてたらOpera Miniのバグを見つけた

前回の記事に引き続いてJavaScriptの乱数の精度を調べてたら、iPhone用のOpera Miniのバグを見つけた。

NumberオブジェクトのtoStringメソッドがうまく働いていないっぽい。

詳細は続きで。

続きを読む

JavaScriptの乱数の精度の話

前回の記事で予告したとおり、今回はJavaScriptのMath.random()で生成できる乱数の精度の話。

前回の記事で、JavaScriptでは2^53未満の正整数を扱うことができるということがわかったから、今回の記事では2^53未満のランダムな正整数を生成してみる。

具体的には↓のようなコード。

var ub = Math.pow(2, 53), list = [];
for (var i = 0; i < 16; i++) {
  list[i] = Math.floor(Math.random() * ub).toString(2);
  while (list[i].length < 53) { list[i] = "0" + list[i]; }  // padding
}
window.alert(list.join("\n"));

続きを読む

JavaScript (ECMAScript) の整数の精度と乱数の精度について

久しぶりにJavaScript (というよりECMAScript) のネタ。今日はECMAScriptで扱える整数と乱数について。

ECMAScriptの数値 (Number) はIEEE 754の倍精度浮動小数点数であると仕様書に明記されている。

ECMAScript Language Specification 5th edition

4.3.19 Number value

primitive value corresponding to a double-precision 64-bit binary format IEEE 754 value.

(強調は引用者)

ECMAScript Language Specification 3rd edition

4.3.20 Number Type

The type Number is a set of values representing numbers. In ECMAScript, the set of values represents the double-precision 64-bit format IEEE 754 values including the special “Not-a-Number” (NaN) values, positive infinity, and negative infinity.

(強調は引用者)

なので、倍精度IEEE 754値の精度の範囲内であれば、桁落ちの心配をせずに整数として扱うことができる。

続きを読む

[JavaScript] prototypeに直接代入しちゃうのってダメじゃなかったっけ?

JavaScript基礎文法最速マスター - なんとなく日記という記事がはてブ界隈で話題になっていたので、徒然なるままに読んでみて心に浮かんだことをそこはかとなく書きつけてみる。

続きを読む

[JavaScript] サロゲートペアの扱い方をわかりやすくメモっておく

先日、JavaScriptでサロゲートペアに対応した文字列関数を書いたりしてみたが、これだけだとサロゲートペアの扱い方を思い出すにはわかりづらいので、わかりやすくまとめ直してメモっておこうと思う。

前提知識

  • サロゲートペアを使って表現できるコードポイントの範囲はU+10000-U+10FFFFだけ (だから、UnicodeはU+10FFFFまでしかコードポイントを割り当てない仕様になってる!)
  • サロゲートコードポイントはU+D800-U+DFFFの2048個 (11ビット)
  • 2048個を上位サロゲート (U+D800-U+DBFF) と下位サロゲート (U+DC00-U+DFFF) に分けて、上位サロゲートと下位サロゲートの組み合わせ (1024*1024) でU+10000-U+10FFFFの範囲を表現する

続きを読む

[JavaScript] サロゲート・ペアに対応した文字列操作関数を書いてみた

JavaScriptの文字列型はUTF-16を採用しているから、サロゲートペアを使用した文字が混ざるといろいろと厄介だったりする。一例としては↓のような感じ。

var s = "𪚲";                // U+2A6B2

console.log(s.length);       // 2
console.log(s.split(""));    // ["�", "�"]

ということで、サロゲートペアの扱いを少し楽にする関数を書いてみたからとりあえず公開してみる。

続きを読む

Google Gears を「滑らかに」使うためのライブラリ、Grease for Gears を公開しました

表題の通り、Google Gears を「滑らかに」使うためのライブラリ、Grease for Gears を公開しました!

最近、Gears を使っていろいろといじっていたんだけど、Gears の API がどうにも使いづらい><JavaScript に慣れた身にはやたらと冗長に感じたり、フレームワークに慣れた身にはやたらと低機能に感じたり><

ということで、LL 脳でフレームワーク脳の僕でも、Gears を滑らかに使えるようになるためのライブラリを書いてみました!ソースは CodeRepos に置いてあります。

root/lang/javascript/Grease - CodeRepos

使い方とか API とか詳しいことは続きで!

続きを読む

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。