2017年12月24日日曜日

JavaScript puzzlers

おそらく今日はNode.js 2 Advent Calendar 2017 - Qiitaから来た人が多いんじゃないかと思います。というわけで初めまして。そしてメリークリスマスイブ。


いきなり自己紹介

某辞書サービスの中の人です。といっても担当サービスは辞書じゃありません。

京都でサーバーサイドとフロントエンドを開発しています。インフラ関連も時々やってます。

弊社では今までNodeで開発をしたことがありませんでしたが、既存サービスのシステムリプレースを行うにあたって「とりあえずやってみようぜ!」というノリでNodeでの開発を提案したらそのまま通ってしまいました。

最近ではiOSDC Japan 2017東京Node学園祭2017にLT枠で参加させてもらいました。どちらもクッソ楽しかったので来年もぜひ何らかの形で参加したいなーと思ってます。

趣味は手品で、以前は某マジシャンのもとで働いていたこともあります。

ようやく本題

すみませんつい語りすぎました。

Nodeのネタということで、最近同僚がV8最新版の機能を紹介したのでそれに関連するネタでも書こうかと思ったのですが、先週参加したCA.kt #5 @大阪KotlinConfでpuzzlerの発表があったよ!っていう話を聞いたので、急遽JavaScriptでもやってみようと思い立ちました。

全体的にNodeというよりJavaScriptの内容ですが、まあそこはご愛嬌。

以下で紹介する問題を含む、全ての問題はGitHubに載せています。おもしろいネタを持っている人はPull requestをください。

Dateでハマる

これを実行すると何が表示される?(GitHubはこちら
var d = new Date("Sun, 24 Dec 2017 09:00:00 +0900");
console.log(d.getYear() + "-" + d.getMonth() + "-" + d.getDay());

クロージャでハマる

これを実行すると何が表示される?(GitHubはこちら
var foo = function(bar) {
    console.log("foo");
    return bar;
}

(function() {
    console.log("bar")
})();

変数でハマる

これを実行すると何が表示される?(GitHubはこちら
var value = 1;

function main() {
    if (value) {
        var value = 2;
        console.log("foo " + value);
    } else {
        console.log("bar " + value);
    }
}

main();

おまけ

KotlinConfではマジックもやっていたそうです。めっちゃ本格的でワロタ。

来年のNode学園祭でやっていいですか?>運営さん

0 件のコメント:

コメントを投稿