3333
3301

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-04-17

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")}();
3333
3301
17

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3333
3301

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?