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

回答編集履歴

2

undefined 値が格納されたプロパティ存在チェック

2018/07/24 03:10

投稿

think49
think49

スコア18194

answer CHANGED
@@ -1,3 +1,5 @@
1
+ ### プロパティの有無をチェック
2
+
1
3
  > `e.target.value`でDOMを取得して値が取れるか取れないかで比較をしたいです。
2
4
  >
3
5
  > 今回の場合は値が取れなかった場合は`undefined`で返ってきます。
@@ -13,4 +15,19 @@
13
15
  - (A) プロパティが存在しない
14
16
  - (B) プロパティが存在し、**undefinedが代入されている**
15
17
 
18
+ ### undefined 値が格納されたプロパティ存在チェック
19
+
20
+ `in` 演算子、`typeof` 演算子でプロパティ有無をチェックするコードを書いた場合、
21
+
22
+ ```JavaScript
23
+ var target1 = {}, target2 = {value: undefined};
24
+
25
+ console.log('value' in target1); // false
26
+ console.log(typeof target1.value !== 'undefined'); // false
27
+ console.log('value' in target2); // true
28
+ console.log(typeof target2.value !== 'undefined'); // false
29
+ ```
30
+
31
+ `in` 演算子は `undefined` 値が格納されたプロパティを正しく認識しますが、``typeof` 演算子は「プロパティが存在しない」と**誤認**します。
32
+
16
33
  Re: tomuziso さん

1

space

2018/07/24 03:10

投稿

think49
think49

スコア18194

answer CHANGED
@@ -11,6 +11,6 @@
11
11
  次の2つを明確に区別して下さい。
12
12
 
13
13
  - (A) プロパティが存在しない
14
- - (B)プロパティが存在し、**undefinedが代入されている**
14
+ - (B) プロパティが存在し、**undefinedが代入されている**
15
15
 
16
16
  Re: tomuziso さん