teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

7

るby

2016/03/09 19:32

投稿

mpyw
mpyw

スコア5223

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

2016/03/09 19:32

投稿

mpyw
mpyw

スコア5223

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補足

2016/03/09 19:26

投稿

mpyw
mpyw

スコア5223

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

何か一行に入りきらなかったので調整

2016/03/09 19:22

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  #### JavaScript (strictモード)
22
22
 
23
- - 変数が同じ関数スコープにおいて**条件分岐や書かれている場所に関わらず** `var` 宣言されている場合,
23
+ - 変数が同じ関数スコープにおいて**条件分岐や書かれ場所に関わらず** `var` 宣言されている場合,
24
24
  代入されていなくても `undefined` としてエラー無しに参照できる
25
25
  (現在より下の行に書かれていてもOKになることは「巻き上げ」と呼ばれる)
26
26
  - 変数が同じブロックスコープ内の**現在より上の行で** `let` 宣言されている場合,

3

巻き上げ

2016/03/09 19:09

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -20,10 +20,12 @@
20
20
 
21
21
  #### JavaScript (strictモード)
22
22
 
23
- - 変数が同じ関数スコープにおいて**条件分岐に関わらず** `var` 宣言されている場合,
23
+ - 変数が同じ関数スコープにおいて**条件分岐や書かれている場所に関わらず** `var` 宣言されている場合,
24
24
  代入されていなくても `undefined` としてエラー無しに参照できる
25
+ (現在より下の行に書かれていてもOKになることは「巻き上げ」と呼ばれる)
25
- - 変数が同じブロックスコープ内で,**現在より上の場所で** `let` 宣言されている場合,
26
+ - 変数が同じブロックスコープ内**現在より上ので** `let` 宣言されている場合,
26
27
  代入されていなくても `undefined` としてエラー無しに参照できる
28
+ (`let`では`var`と違って巻き上げは起こらない)
27
29
  - プロパティが代入されていない場合,`undefined`としてエラー無しに参照できる
28
30
 
29
31
  上記に該当しない場合は `Reference Error` が発生します.

2

巻き上げ

2016/03/09 19:08

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  - 変数が同じ関数スコープにおいて**条件分岐に関わらず** `var` 宣言されている場合,
24
24
  代入されていなくても `undefined` としてエラー無しに参照できる
25
- - 変数が同じブロックスコープにおいて `let` 宣言されている場合,
25
+ - 変数が同じブロックスコープ内で,**現在より上の場所で** `let` 宣言されている場合,
26
26
  代入されていなくても `undefined` としてエラー無しに参照できる
27
27
  - プロパティが代入されていない場合,`undefined`としてエラー無しに参照できる
28
28
 

1

他の言語について

2016/03/09 19:03

投稿

mpyw
mpyw

スコア5223

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はちょっとわかりません,すいません