LotosLabo

プログラミング技術とか気になった情報を載せていきます

CoffeeScriptについて2

基本構文

基本的なルール

・varは不要
・セミコロンは不要
・波括弧はインデントで表現
・丸括弧は曖昧性がない場合は省略可能

(例文)

javascript

var a = "hello world";
if (a.length > 1) {
 alert(a);
}


coffeescript

a = "hello world"
if a.length > 1
 alert a



コメント

# コメント

###
コメント
###


コメントはこのような形で記述できます。

文字列


a = "hello"

複数行も扱える

b = "hello
     hi
     osu"


<ヒアドキュメント>

=> 文字をそのまま出力させる。(改行を含める)


coffeescript

c = """hello
       hi
       osu"""


JavaScript

var c;

c = "hello\nhi\nosu";



改行処理を入れなくてもこのまま表示される

hello
hi
osu

<変数>

変数の格納も簡単にできます


coffeescript

name = "lotos"
alert "hi, #{name}"


JavaScript

var name;
name = "lotos";
alert("hi, " + name);



配列


coffeescript

a0 = [1,2,3,4]


JavaScript

var a0;
a0 = [1, 2, 3, 4];


coffeescript

a1 = [
	1,5,8
	2,4,2
	]


JavaScript

var a1;

a1 = [1, 5, 8, 2, 4, 2];



連想配列


coffeescript

a2 = {"sato": 100, "suzuki": 200}


JavaScript

var a2;

a2 = {
  "sato": 100,
  "suzuki": 200
};


coffeescript

a3 = "sato":
    "sato": 500
    "suzuki": 500
   "sasaki": 
    "sato": 500
    "suzuki": 500


JavaScript

var a3;

a3 = {
  "sato": {
    "sato": 500,
    "suzuki": 500
  }
};

({
  "sasaki": {
    "sato": 500,
    "suzuki": 500
  }
});


coffeescript

a4 = [1..4]    // 1から4まで


JavaScript

var a4;

a4 = [1, 2, 3, 4];


coffeescript

a5 = [1...5]    // 1から4まで  .が3つの場合は最後の数字は含まない


JavaScript

var a5;

a5 = [1, 2, 3, 4];


if文


coffeescript

signal = "red"

if signal == "red"
  alert "stop"
else if signal == "green"
  alert "go"
else
  alert "caution"


JavaScript

var signal;

signal = "red";

if (signal === "red") {
  alert("stop");
} else if (signal === "green") {
  alert("go");
} else {
  alert("caution");
}



比較演算子


is  は == と同じ
isnt は !== と同じ
not は ! と同じ
and は && と同じ
or は || と同じ

演算子を文字で代替可能になる


連結比較子


coffeescript

x = 20

if 10 < x < 30
	alert "true!"


JavaScript

var x;

x = 20;

if ((10 < x && x < 30)) {
  alert("true!");
}



横に続けて書くことが出来る


後置if


coffeescript

x = 20

alert "true" if 10 < x < 30


JavaScript

var x;

x = 20;

if ((10 < x && x < 30)) {
  alert("true");
}


switch文


coffeescript

signal = "red"

switch signal
 when "red" then alert "stop!"
 when "green"
  alert "go"
 else
  alert "caution"


JavaScript

var signal;

signal = "red";

switch (signal) {
  case "red":
    alert("stop!");
    break;
  case "green":
    alert("go");
    break;
  default:
    alert("caution");
}



for文

coffeescript

for i in [0..3]
  alert i


JavaScript

var i, _i;

for (i = _i = 0; _i <= 3; i = ++_i) {
  alert(i);
}


0から3まで出力する


coffeescript

a = ["tanaka", "taguchi", "sasaki"]

for i in a
  alert "hi, #{i}"



JavaScript

var a, i, _i, _len;

a = ["tanaka", "taguchi", "sasaki"];

for (_i = 0, _len = a.length; _i < _len; _i++) {
  i = a[_i];
  alert("hi, " + i);
}


この3つが出力される

hi,tanaka
hi,taguchi
hi,sasaki


関数


coffeescript

hello = ->
	alert "hello"



JavaScript

var hello;

hello = function() {
  return alert("hello");
};