意味不明なjavascriptの仕様集

2017/10/31

意味不明なjavascriptの仕様集

HTML5で使ったりウェブアプリやウェブデザインでは当たり前のように使われるようになったjavascript
このjavascriptには意味不明な仕様がいくつもあるのだ。
プログラマーなら常識なのだが私はアマチュアなので一応忘れないようにブログに書いておこうと思う。

javascriptは、floorという切り捨ての仕様がややこしい。

alert(Math.floor( ( 67.0 – 66.9 ) * 10 ));
 結果0
1にならない。

javascriptは、数を正確に表現できない!

maxi=Math.pow( 2, 55 );
alert(“”+maxi+””);

→ 結果36028797018963970(36028797018963968が正しい)
2の55乗ができない。JavaScriptで扱える最大の数は2の53乗までらしい。

var maxi=36028797018963968;
alert(“”+maxi+””);

→ 結果36028797018963970(36028797018963968が正しい)
なんと数値が別の数値になって表示されてしまう。

alert(76287755398823936);
→ 結果76287755398823940
これも同様。

javascriptは、グローバルとローカルの仕様がややこしい。

for(var i=0;i<=5;i++)
{var x = “global”;}
alert(x);

if(x==”global”)
{var y = “global”;}
alert(y);
for文やif文の中で作った変数がfor文やif文の外で使える。まあこれは許せる。

var foo = “global”;
function hoge()
{
foo = “global2”
var foo = “local”;
alert(foo);
}
hoge();
alert(foo);

fooというグローバル変数hoge内でvarなしでローカル変数としてfooを作った(中身はglobal2)のだが、外でグローバル変数のfooを表示してみると中身はなんとローカル変数のfooの中身だったのだ。varをつけないとグローバル変数のfooを書き換えることになるのだ。そしてvarをつけるとローカル変数になるはずだ。しかしhoge内で表示してみると中身はglobal2になるのだ。もうこれは意味不明なので説明しにくいし今言った事が正しいのかもよくわからない。
このコードは説明するのが難しいのだが、
簡単に言えばグローバル変数とローカル変数がローカル変数だと思っていたらグローバル変数だったりするということだ。※実際はローカル変数をグローバルだと思い込んでいるだけ。

javascriptは、有効桁数が100?表すことが出来る最小値は?

i3=Number.MIN_VALUE;
i3 = i3.toPrecision(21);
alert(i3);

結果4.94065645841246544177e-324
(e-324は10の-324乗)

i3=Number.MIN_VALUE;
i3 = i3.toPrecision(22);
alert(i3);

結果4.940656458412465441766e-324

i3=Number.MIN_VALUE;
i3 = i3.toPrecision(100);
alert(i3);

結果4.940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359924e-324

コンピューターの世界で数値に限界があるというのはどうなのだろうか。
まあそのうち増えていくんだろうが未来では大丈夫なのだろうか。心配になる。


その他関連

自家製ピザを作って食べた(ピザの作り方)

2017/10/30

自家製ピザを作って食べた。(ピザの作り方)

材料(2枚分)

オリーブ油10g
ドライイースト3g
塩3g
砂糖5g
ぬるま湯

小麦粉150g
強力粉50g
ぬるま湯120g

ピザソース(トマトソース・ケチャップ)
細切りチーズ

ウインナーorサラミorカルパスorベーコン
ピーマンやバジルなど好みの具材

作り方

f:id:higajoukun:20171030163043j:plain
まずイースト3gと塩3gと砂糖5gをぬるま湯を入れて混ぜる。

f:id:higajoukun:20171030163051j:plain
オリーブオイル10gも混ぜる。

f:id:higajoukun:20171030163055j:plain
小麦粉150gと強力粉50gとぬるま湯120gも混ぜてコネていく。
板に小麦粉を少し置いてそこでコネると良い。

f:id:higajoukun:20171030163058j:plain
手にくっつかなくなるまでコネていく。

f:id:higajoukun:20171030163102j:plain
コネたらボウルに入れてラップをして1時間ぐらい放置する。

f:id:higajoukun:20171030180814j:plain
オーブンを200℃で予熱しておく。

f:id:higajoukun:20171030180758j:plain
オーブン使用OKのクッキングシートの上に生地(1枚分は半分)を置いて丸い形に伸ばす。

f:id:higajoukun:20171030180828j:plain
トマトソースを塗ってから好きな具を乗せていく。
今回はベーコンの塊とカルパスを乗せた。

f:id:higajoukun:20171030180833j:plain
最後にチーズを全体に乗せる。

f:id:higajoukun:20171030180838j:plain
クッキングシートに乗せたままオーブンに入れて200℃15分~18分間焼く。

f:id:higajoukun:20171030180839j:plain
そして完成。
時間設定を間違えたので少し焦げたが美味しかった。
少し酸っぱかったのでトマトソースを塗りすぎたかもしれない。
初めてにしてはまあまあの出来だ。
また作る予定。


追記

f:id:higajoukun:20171030210716j:plain:w300
2枚目はおいしく焼けた。
200℃で15分。

自家焙煎したコロンビアをSTARESSOで飲んでみた

2017/10/30

f:id:higajoukun:20171030162906j:plain:w300

自家焙煎したコロンビアをハンドエスプレッソマシンで飲んでみた。

f:id:higajoukun:20171030162909j:plain
8g細挽きを詰めていく。

f:id:higajoukun:20171030164559j:plain
そして完成品がこちら。
香りはエスプレッソ特有の甘い香りがする。
味は苦味が強くウマイ苦味だ。
渋い男って感じの印象である。
ただし少し青臭い感じはある。
2回目の連続抽出液を混ぜると苦味とコクが口全体に広がる粉っぽい感じの旨さがある。
3回目もあまり変わらない。
この豆とエスプレッソマシンは相性が良くてウマイ苦味になるのだ。
ミニストップのコーヒーに近い旨さであり、それ以上である。
まったりした感じと強い苦味とコクがある。