Help us understand the problem. What is going on with this article?

JavaScriptを読んでて「なにこれ!?」と思うけれど調べられない記法8選。

More than 5 years have passed since last update.

JavaScriptを読んでいると、「あれ、、、なにこれ?この書き方。。。」と思うことがたまにあります。この際の厄介なことは、どうやって調べたらいいかわからないことです。Google先生に聞こうにも、その書き方をなんと呼ぶかわからないので聞けない。

そんな「なにこれ?」を厳選してみました。覚えておくと、将来スッキリとする時が来るでしょう。

1. なみなみ、ふにゃふにゃ言ってる

var arg = ~~~~~~~~~~~1^1|1&1<<1>>1>>>1

ビット演算子を使うと、JavaScriptでなみなみ、ふにゃふにゃ言えます。上記は-1です。

2. アンダーバーアンダーバー、ダラーダラー言ってる。

var __$$_$$$_$$_$$_peso = "だらーだらー";

JavaScriptでは、変数名に文字と数字、Unicode文字、それに_と\$を使うことができます。
つまり、アンダーバーやダラーが出てきても、それは単なる文字と一緒です。特に意味はありませんが、目立つので、(多分それが理由で)JQueryではJQueryオブジェクトのエイリアスに\$を使っています。

3. 大カッコ、中カッコ

{}
[]

オブジェクトの生成が{}、配列の生成が[]です。上記コードは下記と同じ意味です。

new Object();
new Array();

4. かっこかっこ言ってる。

execFunc()();

JavaScriptでは、関数で関数を返すことができます。どう説明すればよいかわからないので、サンプルコードを示します。

function execFunc(){
  return function(){
    console.log("do");
  }
}

上記は関数を返す関数で、execFunc()で、実行可能な関数が生成され、その直後に()をつけることによって生成された関数を実行するというものです。

5. 見慣れぬコロン

JavaScriptでコロンが出てくるパターンは3項演算子とラベルとオブジェクトリテラル(くらい?)です。その中でも、三項演算子とラベルはいきなり出てくるとびっくりするので選出です。

三項演算子
var arg = 条件 ? true : false;
ラベル
test: while(true){
    break test;
}

ラベルは、JavaScriptではループ文の前につけてそのループをbreakしたりcontinueしたりするのに使えます。ループ分以外の式にもラベルをつけることもできます。

6. いきなりスラッシュ(/)

var regexp = /test/i

""や''で囲われているのは文字列ですが、//で囲まれているのは見慣れませんね。//で囲まれたのは正規表現で、RegExpオブジェクトが生成されます。上のコードは下記コードと同じ意味です。

var regexp = new RegExp("test", "i");

7. 唐突に単独のバックスラッシュ

var message = "JavaScriptでは\
文字列の最終行に\\をつけることで\
複数行の文字列を定義することが\
できてしまうのです。\
";

8. function前の変な記号

functionの前に特定の記号をつけることにより即時実行関数を定義することができます。即時実行関数とは、スコープを限定的にするために用いる記法で、以下の表現が代表的です。

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

()で囲み、その後に実行のための()をつけることで定義した関数を即時に実行できます。この記法は有名なのですが、実は()で囲わなくても最初に!や+や-や~の記号をつけることで即時関数として実行できます。

!function(){console.log("do")}();
+function(){console.log("do")}();
-function(){console.log("do")}();
~function(){console.log("do")}();

ちなみに、functionの前に何も付けないと文法エラーとなります。

これは文法エラー
function(){console.log("do")}();
ukiuni@github
投稿内容は私個人の意見であり、所属企業・部門とは関係ありません。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした