2016年02月28日

【JavaScript】擬似的にブロックスコープを実装してみる

JavaScriptの変数定義の仕様上、「変数の意図しない競合を防ぐ」と言う事は、案外需要の高いトピックかもしれませぬ。
※ES6になればletが使えるので、万事解決なんですけどw


と言うわけで、擬似的にブロックスコープを定義するサンプルをご紹介します。


with ({b:0}) {
    if (true) {
        b = 5;
    }
}

alert(b); // 変数bはスコープ外なのでエラーとなる




まぁ、相当トリッキーというか、微妙な記述ですなんけど、こんな感じで無理やり実現する事が可能です。

with命令を使って、withブロック内でのみ参照可能な変数(実際には無名/匿名オブジェクトのプロパティ)を定義しています。


あんまり頻繁に使うのもアレですけど、どうしてもブロックスコープを使わなきゃならないような場合にお試しくださいませ。





ウサコのLINEすたんぷ好評配信中!

https://store.line.me/stickershop/product/1014321/ja

posted by kinky-do at 23:05| JavaScript

2016年02月27日

下の子の暴走(?)

今日、初めて家族で居酒屋に行きまして。

地元の駅に16時からやってるはなの舞があるので、予約して初チャレンジしてみたんですわ。

ぶっちゃけ恐る恐るでしたが、予想上に子どもたちは喜んでくれたみたいで、とーちゃんとしては大満足なんですけどね。

やっぱ全力で飲めないため、全く酒が足りなかった訳ですよ。


なので、帰りがけにコンビニに寄って酒を買い足したんですが、家に着いたらアタシも嫁も見覚えの無い商品が袋に入ってたんです。

チョコクロワッサン。

で、「何だろう、店員の入れ間違えか?」みたいな感じで気にも止めず、アタシも嫁も各々の行動を取ってたんですけどね。


気が付いたら、下の子が勝手に袋開けてムシャムシャとクロワッサンを食べてる訳ですわ。


呆気にとられ、何してんだコイツ?と思い、しばらく観察してたところ、下の子が発した言葉。


「これ、アタチの」







なんだと?






しばらく意味が理解出来ずにポカーンとしてたところ、上の子がすかさず


「○ちゃん、カゴに入れてたよ」


と。





( ゚д゚)







なんとまぁ。


チョコクロワッサンなんて物をチョイスしたことにもビックリ、気付かないうちにカゴに入れてたことにもビックリ、何食わぬ顔で貪りついてる姿にもビックリ。


いやはや、2歳児恐るべしであります。



「勝手にカゴに入れたらダメだよ」と諭しても、チョコクロワッサンが思いのほか美味しいのか、終始ニコニコしている下の子には全く無意味でした。




まぁ、結論としては、そんな姿も可愛いからいいんですけどね。←親バカ




ウサコのLINEすたんぷ好評配信中!
https://store.line.me/stickershop/product/1014321/ja
posted by kinky-do at 22:44| 子育て

2016年02月23日

【JavaScript】encodeURI()とencodeURIComponent()について

JavaScruptでURL(URI)エンコードを行いたい場合、以下の関数が使えます。

encodeURI()
encodeURIComponent()
※ escape()はもはや無いものとして考えます

両者ともに使い方は簡単で、引数としてエンコードしたい値を渡すだけです。


では、この2つの関数はそれぞれ何が違うのかと言うと、エンコード対象とする値に若干差異があります。

encodeURI()は、URLにおいて特別な意味を持つ予約文字「/」「:」「&」「+」「=」などはエンコードしません。

逆にencodeURIComponent()は、URLで使用する記号をすべてエンコードします。


一見すると、「じゃあ常にencodeURIComponent()を使えばええやん」ってなるかもしれませんが、少し注意が必要です。

と言うのも、「/」「:」「&」「+」「=」を全てエンコード対象とするため、引数としてURLそのものを渡すと、URLとして使えない値が返却されてしまいます。
※「http%3A%2F%2Fwww〜〜〜」みたいな値になってしまいます



じゃあ、どうすればいいのか。



答えは簡単。



元のURLをエンコードが必要な部分とそうじゃない部分に分けて、必要な箇所にだけencodeURIComponent()を適用し、それぞれを結合したURLを利用すればいいだけです。


方法はいくらでもありますけど、単純にこれでいいと思います。




ウサコのLINEすたんぷ好評配信中!
https://store.line.me/stickershop/product/1014321/ja
posted by kinky-do at 22:30| JavaScript