回答編集履歴
4
日本語の文章を表現を微修正
test
CHANGED
@@ -40,7 +40,7 @@
|
|
40
40
|
|
41
41
|
【たぶん、よくわかる解説2!!!】
|
42
42
|
|
43
|
-
JavaScriptでは関数(メソッド)をオブジェクトとして扱うと、それを呼び出す(評価する)が厳密に区別されます。それは後ろに`()`を付けるかどうかです。では、CoffeeScriptはどうかというと、引数がある場合のみ`()`を省略しても良いとなっています。逆に引数無しで関数を呼び出す場合は必ず`()`が必要です。
|
43
|
+
JavaScriptでは関数(メソッド)をオブジェクトとして扱う場合と、それを呼び出す(評価する)場合が厳密に区別されます。それは後ろに`()`を付けるかどうかです。では、CoffeeScriptはどうかというと、引数がある場合のみ`()`を省略しても良いとなっています。逆に引数無しで関数を呼び出す場合は必ず`()`が必要です。
|
44
44
|
|
45
45
|
|
46
46
|
|
3
誤字脱字修正
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
と、`->`の部分を`=>`に変えてみてください。期待通りに動くと思います。
|
14
14
|
|
15
|
-
そして、`@alertName`を`@alertName()`に
|
15
|
+
そして、`@alertName`を`@alertName()`に変えるとうまく実行されます。
|
16
16
|
|
17
17
|
|
18
18
|
|
2
\(\)を付けた
test
CHANGED
@@ -1,14 +1,18 @@
|
|
1
|
+
修正点は2カ所です。
|
2
|
+
|
1
3
|
```CoffeeScript
|
2
4
|
|
3
5
|
$('.name').on 'keyup', (e) =>
|
4
6
|
|
5
7
|
if e.which == 13
|
6
8
|
|
7
|
-
@alertName
|
9
|
+
@alertName()
|
8
10
|
|
9
11
|
```
|
10
12
|
|
11
13
|
と、`->`の部分を`=>`に変えてみてください。期待通りに動くと思います。
|
14
|
+
|
15
|
+
そして、`@alertName`を`@alertName()`に返ると実行されます。
|
12
16
|
|
13
17
|
|
14
18
|
|
@@ -31,3 +35,17 @@
|
|
31
35
|
|
32
36
|
|
33
37
|
蛇足: この便利な`=>`ですが、**ECMAScript 2015にパクられました。**__IE以外の__ブラウザあれば、素のJavaScriptでも使えるようになります。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
【たぶん、よくわかる解説2!!!】
|
42
|
+
|
43
|
+
JavaScriptでは関数(メソッド)をオブジェクトとして扱うと、それを呼び出す(評価する)が厳密に区別されます。それは後ろに`()`を付けるかどうかです。では、CoffeeScriptはどうかというと、引数がある場合のみ`()`を省略しても良いとなっています。逆に引数無しで関数を呼び出す場合は必ず`()`が必要です。
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
つまり、`@alertName`はただの関数オブジェクトです。それが実行されるわけではありません。しかし、`@alertName()`はその関数オブジェクトを引数無しで呼び出します。また、引数がある場合、たとえば、`@alertName 0`とした場合は、`@alertName(0)`として解釈されますので、同じく呼び出されます。
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
CoffeeScriptではこのように、関数を呼び出したい(評価したい)場合に、**引数無しの場合のみ**()の省略ができません。なお、`new TestClass`のようにnew式におけては、JavaScriptと同様に()を省略することは可能ですが、これは例外的なものです。
|
1
強調部分を変更
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
【たぶん、よくわかる解説!!!】
|
16
16
|
|
17
|
-
CoffeeScriptの`@`は`this.`です。ただ`this.`になるだけです。しかし、ここでの問題は**JavaScript**における`this`の扱いです。JavaScriptでの`this`は関数を呼び出したときのレシーバ(.の前の部分)になります。ですので、class内のメソッドでは通常`this`はインスタンス自身です。ですが、関数の中で作られる関数(`->`は関数を作ります)が実行されるときに、`this`がそのままインスタンス自身とは限りません。特に`on`のようなコールバックを引数にする場合、コールバックの関数が今のインスタンスから
|
17
|
+
CoffeeScriptの`@`は`this.`です。ただ`this.`になるだけです。しかし、ここでの問題は**JavaScript**における`this`の扱いです。JavaScriptでの`this`は関数を呼び出したときのレシーバ(.の前の部分)になります。ですので、class内のメソッドでは通常`this`はインスタンス自身です。ですが、関数の中で作られる関数(`->`は関数を作ります)が実行されるときに、`this`がそのままインスタンス自身とは限りません。特に`on`のようなコールバックを引数にする場合、コールバックの関数が**今のインスタンスから呼び出されるとは限らない**ため、`this`がインスタンス自身を指す保証はありません。
|
18
18
|
|
19
19
|
|
20
20
|
|
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
|
24
24
|
|
25
|
-
これはかなり面倒なものです。そこでCoffeeScriptは`=>`を開発しました。`=>`と`->`の違いは`this`を束縛するかどうかです。どういうことかというと`=>`で関数を作った場合、その関数がどこでどう呼び出されようが、`this`つまり`@`は関数を作った時のインスタンスになります。どうやってそうしているのかはJavaScriptに変換してみるとわかりますのでぜひ確認してください。
|
25
|
+
これはかなり面倒なものです。そこでCoffeeScriptは`=>`を開発しました。`=>`と`->`の違いは`this`を束縛するかどうかです。どういうことかというと`=>`で関数を作った場合、その関数がどこでどう呼び出されようが、`this`つまり`@`は**関数を作った時のインスタンスになります**。どうやってそうしているのかはJavaScriptに変換してみるとわかりますのでぜひ確認してください。
|
26
26
|
|
27
27
|
|
28
28
|
|