回答編集履歴
4
等価コードを書き換えました\(2\)
test
CHANGED
@@ -76,15 +76,9 @@
|
|
76
76
|
|
77
77
|
```JavaScript
|
78
78
|
|
79
|
-
var
|
79
|
+
for (var i = 0, l = keys.length; i < l; i++) {
|
80
80
|
|
81
|
-
|
81
|
+
a[i] = keys[i];
|
82
|
-
|
83
|
-
var keys = Object.keys(o); // ['x', 'y', 'z']
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
for (var i = 0, l = keys.length; i < l, a[i] = keys[i]; i++) {
|
88
82
|
|
89
83
|
console.log(a);
|
90
84
|
|
@@ -104,6 +98,6 @@
|
|
104
98
|
|
105
99
|
|
106
100
|
|
107
|
-
**(2015/11/04 06:3
|
101
|
+
**(2015/11/04 06:32追記)**
|
108
102
|
|
109
103
|
等価コードを書き換えました。
|
3
等価コードを書き換えました
test
CHANGED
@@ -84,11 +84,9 @@
|
|
84
84
|
|
85
85
|
|
86
86
|
|
87
|
-
for (var i = 0, l = keys.length, key
|
87
|
+
for (var i = 0, l = keys.length; i < l, a[i] = keys[i]; i++) {
|
88
88
|
|
89
|
-
keylist.push(keys[i]);
|
90
|
-
|
91
|
-
console.log(
|
89
|
+
console.log(a);
|
92
90
|
|
93
91
|
console.log(i);
|
94
92
|
|
@@ -103,3 +101,9 @@
|
|
103
101
|
|
104
102
|
|
105
103
|
- [console chrome developer tools - Google 検索](https://www.google.co.jp/search?hl=ja&ie=UTF-8&q=console+chrome+developer+tools)
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
**(2015/11/04 06:30追記)**
|
108
|
+
|
109
|
+
等価コードを書き換えました。
|
2
Firefoxのバグ云々の記述削除\(私のケアレスミスによる勘違いだったようです\)
test
CHANGED
@@ -103,15 +103,3 @@
|
|
103
103
|
|
104
104
|
|
105
105
|
- [console chrome developer tools - Google 検索](https://www.google.co.jp/search?hl=ja&ie=UTF-8&q=console+chrome+developer+tools)
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
ちなみに、`for (a[i] in o)` は **Firefox 41.2 で SyntaxError** になります。
|
110
|
-
|
111
|
-
ですので残念ながら、このコードを使うのは現実的ではないですね。
|
112
|
-
|
113
|
-
`Object.keys` や `for-in` 内の block 文内でコードを書けば実質的には問題ありませんが。
|
114
|
-
|
115
|
-
JavaScript はブラウザで実行するものなので複数のブラウザで確認するよう気をつけてください。
|
116
|
-
|
117
|
-
また、コードは再現性が大切なので質問する時には環境(ブラウザの名前とバージョン)を示した方が良いと思います。
|
1
for \(a\[i\] in o\) のコード追加
test
CHANGED
@@ -39,3 +39,79 @@
|
|
39
39
|
大抵のコーディング規約では `{}` の省略は禁止されますし、バグの元となります。
|
40
40
|
|
41
41
|
しっかりと理解して書く分には問題ないともいえますが、勉強中なら省略するメリットがないと思います。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
**(2015/11/03 23:21追記)**
|
46
|
+
|
47
|
+
[Javascriptのオブジェクトについて(19181)|teratail](https://teratail.com/questions/19181#r29932) のコードを元に次のコードを考察します。
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
```JavaScript
|
52
|
+
|
53
|
+
var o = {x:1, y:2, z:3};
|
54
|
+
|
55
|
+
var a = [], i = 0;
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
for (a[i] in o) {
|
60
|
+
|
61
|
+
console.log(a);
|
62
|
+
|
63
|
+
console.log(i++);
|
64
|
+
|
65
|
+
}
|
66
|
+
|
67
|
+
```
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
`a[i]` は繰り返し評価され、`a[i] = propertyName` が実行されます。
|
72
|
+
|
73
|
+
先のコードは下記コードとほぼ等価です(厳密には違います)。
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
```JavaScript
|
78
|
+
|
79
|
+
var o = {x:1, y:2, z:3};
|
80
|
+
|
81
|
+
var a = [], i = 0;
|
82
|
+
|
83
|
+
var keys = Object.keys(o); // ['x', 'y', 'z']
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
for (var i = 0, l = keys.length, keylist = []; i < l; i++) {
|
88
|
+
|
89
|
+
keylist.push(keys[i]);
|
90
|
+
|
91
|
+
console.log(keylist);
|
92
|
+
|
93
|
+
console.log(i);
|
94
|
+
|
95
|
+
}
|
96
|
+
|
97
|
+
```
|
98
|
+
|
99
|
+
`console.log` については開発者ツールを使って下さい。
|
100
|
+
|
101
|
+
テストコードについては `document.write` よりも有用です。
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
- [console chrome developer tools - Google 検索](https://www.google.co.jp/search?hl=ja&ie=UTF-8&q=console+chrome+developer+tools)
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
ちなみに、`for (a[i] in o)` は **Firefox 41.2 で SyntaxError** になります。
|
110
|
+
|
111
|
+
ですので残念ながら、このコードを使うのは現実的ではないですね。
|
112
|
+
|
113
|
+
`Object.keys` や `for-in` 内の block 文内でコードを書けば実質的には問題ありませんが。
|
114
|
+
|
115
|
+
JavaScript はブラウザで実行するものなので複数のブラウザで確認するよう気をつけてください。
|
116
|
+
|
117
|
+
また、コードは再現性が大切なので質問する時には環境(ブラウザの名前とバージョン)を示した方が良いと思います。
|