俺の報告

RoomClipを運営するエンジニアの日報(多分)です。

日報 #5 - 文と式とFunction

本日の報告。

 

ネット上の膨大なドキュメントに、薄い一枚を加えるという発想に立てば、

あるいは実りあるブログだと言えるかもしれない。

でもその発想じゃ長続きしそうにない。

明確な理由なんてないけど。

 

今日の作業

1. 相変わらず新デザインモック作成中

2. 新規機能対応のサーバサイドスクリプト拡張

3. 幾つかのバグフィックス

 

 

ぶっちゃけっと、ブログに書けるような「気づき」は本日1つもなかった。

低気圧のせいかな。

AWSのSQSと連動するワーカースクリプトがデーモン上でのみ変な挙動をするのを発見したが、

別に大した示唆を含むバグじゃなかった。

強いて言えば「共同開発マジどうしていいかわかんねぇ」ってくらいで、

コレに関しては発見が1つもなくてただただ不安というだけ。

 

だからさっさと終わりってことにしたいが、

1つくらい何をか話したい。

 

じゃぁ俺がちょっと前にボンヤリ思った疑問を残して終わろう。

 

Javascriptについて。

JSは文(Statement)と式(Expression)で成り立っており、

文は式と文で形成され、式は識別子・演算子リテラル値によって形成される。

ここまではまぁよい。

では例えば、変数宣言構文はhttps://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/varここに紹介されるとおり、

式(識別子)=式(任意の有効な式)

というシンタックスだ。

とても分かりやすいように見える。

ここで、jsの大きな特徴であるFunction式について考えてみる。

 Function式はhttps://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/functionここにある通り、

function [name]([param1, param2, ..., paramN]) {

   statements

}

こんな感じになる。

隠し条件として、function宣言から始まるとFunction文だと判定されるというものがある。

よく見るSNS系のJSサンプルスクリプト

!function(…とかやってるのは、function文ではなく、function式として判定されることを期待して、

()演算子の実行対象になれるようにするためだ。

 

まぁそれはどうでもよい。

 

俺が思っている疑問は1つ。

Function式に、Statementが入ってしまっていること。

式の中に文がある。ん?ってかんじだ。

式だからevalされるんだろうと思う。

ん?文が評価されるの?実行されずに?

は?

 

以上。

今だ解決できていない、Function式の中のステートメント

ま、すごい勘違いなんだろうけどなぁ。

 

タイフーンは嫌いだ。