回答編集履歴
7
るby
answer
CHANGED
@@ -29,6 +29,8 @@
|
|
29
29
|
- プロパティが代入されていない場合,`undefined`としてエラー無しに参照できる
|
30
30
|
|
31
31
|
上記に該当しない場合は `Reference Error` が発生します.
|
32
|
+
JavaScriptには変数が参照可能かどうかをエラーの発生なしに確認する手段はありません.
|
33
|
+
(グローバル変数を除く)
|
32
34
|
|
33
35
|
#### Ruby
|
34
36
|
|
@@ -37,5 +39,7 @@
|
|
37
39
|
(RubyではJavaScriptの`var`のように巻き上げは起こらない)
|
38
40
|
|
39
41
|
上記に該当しない場合は `Name Error` が発生します.
|
42
|
+
Rubyでは変数が参照可能かどうかを `defined?` で確認出来ます.
|
43
|
+
(PHPの`isset`のように頻繁に使われることはありません)
|
40
44
|
|
41
45
|
Pythonはちょっとわかりません,すいません
|
6
Ruby
answer
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
#### Ruby
|
34
34
|
|
35
|
-
- 変数が同じ関数スコープにおいて**条件分岐に関わらず**代入する記述がある場合,
|
35
|
+
- 変数が同じ関数スコープにおいて**条件分岐に関わらず現在より上の行で**代入する記述がある場合,
|
36
36
|
代入されていなくても `nil` としてエラー無しに参照できる
|
37
37
|
(RubyではJavaScriptの`var`のように巻き上げは起こらない)
|
38
38
|
|
5
Ruby補足
answer
CHANGED
@@ -34,6 +34,7 @@
|
|
34
34
|
|
35
35
|
- 変数が同じ関数スコープにおいて**条件分岐に関わらず**代入する記述がある場合,
|
36
36
|
代入されていなくても `nil` としてエラー無しに参照できる
|
37
|
+
(RubyではJavaScriptの`var`のように巻き上げは起こらない)
|
37
38
|
|
38
39
|
上記に該当しない場合は `Name Error` が発生します.
|
39
40
|
|
4
何か一行に入りきらなかったので調整
answer
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
#### JavaScript (strictモード)
|
22
22
|
|
23
|
-
- 変数が同じ関数スコープにおいて**条件分岐や書かれ
|
23
|
+
- 変数が同じ関数スコープにおいて**条件分岐や書かれた場所に関わらず** `var` 宣言されている場合,
|
24
24
|
代入されていなくても `undefined` としてエラー無しに参照できる
|
25
25
|
(現在より下の行に書かれていてもOKになることは「巻き上げ」と呼ばれる)
|
26
26
|
- 変数が同じブロックスコープ内の**現在より上の行で** `let` 宣言されている場合,
|
3
巻き上げ
answer
CHANGED
@@ -20,10 +20,12 @@
|
|
20
20
|
|
21
21
|
#### JavaScript (strictモード)
|
22
22
|
|
23
|
-
- 変数が同じ関数スコープにおいて**条件分岐に関わらず** `var` 宣言されている場合,
|
23
|
+
- 変数が同じ関数スコープにおいて**条件分岐や書かれている場所に関わらず** `var` 宣言されている場合,
|
24
24
|
代入されていなくても `undefined` としてエラー無しに参照できる
|
25
|
+
(現在より下の行に書かれていてもOKになることは「巻き上げ」と呼ばれる)
|
25
|
-
- 変数が同じブロックスコープ内
|
26
|
+
- 変数が同じブロックスコープ内の**現在より上の行で** `let` 宣言されている場合,
|
26
27
|
代入されていなくても `undefined` としてエラー無しに参照できる
|
28
|
+
(`let`では`var`と違って巻き上げは起こらない)
|
27
29
|
- プロパティが代入されていない場合,`undefined`としてエラー無しに参照できる
|
28
30
|
|
29
31
|
上記に該当しない場合は `Reference Error` が発生します.
|
2
巻き上げ
answer
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
- 変数が同じ関数スコープにおいて**条件分岐に関わらず** `var` 宣言されている場合,
|
24
24
|
代入されていなくても `undefined` としてエラー無しに参照できる
|
25
|
-
- 変数が同じブロックスコープ
|
25
|
+
- 変数が同じブロックスコープ内で,**現在より上の場所で** `let` 宣言されている場合,
|
26
26
|
代入されていなくても `undefined` としてエラー無しに参照できる
|
27
27
|
- プロパティが代入されていない場合,`undefined`としてエラー無しに参照できる
|
28
28
|
|
1
他の言語について
answer
CHANGED
@@ -14,4 +14,25 @@
|
|
14
14
|
(PHP7でも`filter_var`は普通に使うかも)
|
15
15
|
|
16
16
|
- [$_GET, $_POSTなどを受け取る際の処理](http://qiita.com/mpyw/items/2f9955db1c02eeef43ea)
|
17
|
-
- [PHP7で流行って欲しいリクエストパラメータの受け取り方](http://qiita.com/mpyw/items/25abc3e51fddc85e0ec0)
|
17
|
+
- [PHP7で流行って欲しいリクエストパラメータの受け取り方](http://qiita.com/mpyw/items/25abc3e51fddc85e0ec0)
|
18
|
+
|
19
|
+
なお,PHP以外の他の言語においては,`isset`のようなエラー発生を回避するための仕組みが必要なことは稀です.
|
20
|
+
|
21
|
+
#### JavaScript (strictモード)
|
22
|
+
|
23
|
+
- 変数が同じ関数スコープにおいて**条件分岐に関わらず** `var` 宣言されている場合,
|
24
|
+
代入されていなくても `undefined` としてエラー無しに参照できる
|
25
|
+
- 変数が同じブロックスコープにおいて `let` 宣言されている場合,
|
26
|
+
代入されていなくても `undefined` としてエラー無しに参照できる
|
27
|
+
- プロパティが代入されていない場合,`undefined`としてエラー無しに参照できる
|
28
|
+
|
29
|
+
上記に該当しない場合は `Reference Error` が発生します.
|
30
|
+
|
31
|
+
#### Ruby
|
32
|
+
|
33
|
+
- 変数が同じ関数スコープにおいて**条件分岐に関わらず**代入する記述がある場合,
|
34
|
+
代入されていなくても `nil` としてエラー無しに参照できる
|
35
|
+
|
36
|
+
上記に該当しない場合は `Name Error` が発生します.
|
37
|
+
|
38
|
+
Pythonはちょっとわかりません,すいません
|