回答編集履歴
2
undefined 値が格納されたプロパティ存在チェック
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
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 さん
|