Baseline Widely available
for...in
문ì ììë ì´ê±° ê°ë¥í ìì±ë¤ì í¬í¨íì¬ ê°ì²´ìì 문ìì´ë¡ í¤ê° ì§ì ë 모ë ì´ê±° ê°ë¥í ìì±ì ëí´ ë°ë³µí©ëë¤. (Symbolë¡ í¤ê° ì§ì ë ìì±ì 무ìí©ëë¤.)
const object = { a: 1, b: 2, c: 3 };
for (const property in object) {
console.log(`${property}: ${object[property]}`);
}
// Expected output:
// "a: 1"
// "b: 2"
// "c: 3"
문ë²
for (const variable in object) {
statement;
}
íë¼ë¯¸í°
variable
ë§¤ë² ë°ë³µë§ë¤ ë¤ë¥¸ ìì±ì´ë¦(Value name)ì´ ë³ì(variable)
ë¡ ì§ì ë©ëë¤.
object
ë°ë³µìì ì ìíí ê°ì²´ë¡ ì´ê±°í ìì±ì ê°ì§ê³ ìë ê°ì²´.
for...in
문ì ì´ê±° ê°ë¥í non-Symbol ìì±ì ëí´ìë§ ë°ë³µí©ëë¤.
Array
ë Object
ë± ë´ì¥ constructor를 íµí´ ë§ë¤ì´ì§ ê°ì²´ë String
ì indexOf()
, Object
ì toString()
ì ê°ì´ Object.prototype
, String.prototype
ë¡ë¶í° ì´ê±°ê° ê°ë¥íì§ ìì ìì±ë¤ì ììí´ììµëë¤. for...in
문ì ê°ì²´ ìì²´ì 모ë ì´ê±° ê°ë¥í ìì±ë¤ê³¼ íë¡í íì
ì²´ì¸ì¼ë¡ë¶í° ììë°ì ìì±ë¤ì ëí´ ë°ë³µí ê²ì
ëë¤. (ë ê°ê¹ì´ íë¡í íì
ì ìì±ë¤ì´ íë¡í íì
ì²´ì¸ ê°ì²´ë¡ë¶í° ë ë©ë¦¬ ë¨ì´ì§ íë¡í íì
ì ìì±ë³´ë¤ ë ì°ì í©ëë¤.)
for..in
문ì ììì ììë¡ ê°ì²´ì ìì±ë¤ì ëí´ ë°ë³µí©ëë¤. (ì ì´ë cross-browser
ì¤ì ììë ì íë©´ì ì¼ë¡ ë³´ì´ë ë°ë³µì ìì를 ë°ë¥¼ ì ìëì§ì ëí´ì delete
를 ì°¸ê³ íììì¤.)
ë§ì½ í ë°ë³µì¼ë¡ ìì±ì´ ìì ë íì 방문íë ê²½ì°, ë°ë³µë¬¸ììì ê·¸ ê°ì ëì¤ì ê°ì¼ë¡ ì í´ì§ëë¤. 방문í기 ì ì ìì ë ìì±ì ëí´ìë ì´íì 방문íì§ ììµëë¤. ë°ë³µì´ ë°ìíë ê°ì²´ì ì¶ê°ë ìì±ì 방문íê±°ë ë°ë³µìì ìëµí ì ììµëë¤.
ì¼ë°ì ì¼ë¡ íì¬ ë°©ë¬¸ ì¤ì¸ ìì± ì¸ìë ë°ë³µíë ëì ê°ì²´ì ìì±ì ì¶ê°, ìì , ì ê±°íì§ ìë ê²ì´ ê°ì¥ ì¢ìµëë¤. ì¶ê°ë ìì±ì 방문í ê²ì¸ì§, ìì ë ìì±(íì¬ì ìì± ì ì¸)ì ìì ì´ì í¹ì ì´íì 방문í ê²ì¸ì§, ìì ë ìì±ì ìì ì´ì ì 방문í ê²ì¸ì§ì ëí´ìë ë³´ì¥í ì ììµëë¤.
ë°°ì´ì ë°ë³µê³¼ for...inNote:
for...in
ì ì¸ë±ì¤ì ììê° ì¤ìíArray
ìì ë°ë³µì ìí´ ì¬ì©í ì ììµëë¤.
ë°°ì´ ì¸ë±ì¤ë ì ìë¡ ë ì´ê±° ê°ë¥í ìì±ì´ë©°, ì¼ë°ì ì¸ ê°ì²´ì ìì±ë¤ê³¼ ê°ìµëë¤. for...in
ì í¹ì ììì ë°ë¼ ì¸ë±ì¤ë¥¼ ë°ííë ê²ì ë³´ì¥í ì ììµëë¤. for...in
ë°ë³µë¬¸ì ì ìê° ìë ì´ë¦ì ê°ì§ ìì±, ììë 모ë ì´ê±° ê°ë¥í ìì±ë¤ì ë°íí©ëë¤.
ë°ë³µëë ììë 구íì ë°ë¼ ë¤ë¥´ê¸° ë문ì, ë°°ì´ì ë°ë³µì´ ì¼ê´ë ììë¡ ìì를 방문íì§ ëª»í ìë ììµëë¤. ê·¸ë¬ë¯ë¡ 방문ì ììê° ì¤ìí ë°°ì´ì ë°ë³µììë ì«ì ì¸ë±ì¤ë¥¼ ì¬ì©í ì ìë for
ë°ë³µë¬¸ì ì¬ì©íë ê²ì´ ì¢ìµëë¤.(ëë Array.prototype.forEach()
, for...of
를 ê¶ì¥í©ëë¤.)
ë§ì½ ë¹ì ì´ ê°ì²´ì íë¡í íì
ì´ ìë ê°ì²´ ìì²´ì ì°ê²°ë ìì±ë§ ê³ ë ¤íë¤ë©´ getOwnPropertyNames()
ë hasOwnProperty()
를 ì¬ì©íììì¤.(propertyIsEnumerable()
ëí ê°ë¥í©ëë¤.) ëë ì¸ë¶ì ì¸ ì½ë ê°ìì´ ìë¤ë©´ ì²´í¬ ë©ìëë¡ ë´ì¥ íë¡í íì
ì íì¥í ì ììµëë¤.
for...in
ì´ ê°ì²´ì ë°ë³µì ìí´ ë§ë¤ì´ì¡ì§ë§, ë°°ì´ì ë°ë³µì ìí´ìë ì¶ì²ëì§ ìê³ , Array.prototype.forEach()
, for...of
ê° ì´ë¯¸ ì¡´ì¬í©ëë¤. ê·¸ë¬ë©´ for...inì ì´ë»ê² ì¬ì©íë ê²ì´ ì¢ìê¹ì?
ì´ê²ì ì½ê² ê°ì²´ì ìì±ì íì¸(ì½ìì´ë ë¤ë¥¸ ë°©ë²ì¼ë¡ ì¶ë ¥)í ì ì기 ë문ì ì¤ì§ì ì¼ë¡ ëë²ê¹ ì ìí´ ì¬ì©ë ì ììµëë¤. ë°°ì´ì´ ë°ì´í°ì ì ì¥ì ìì´ìë ë ì¤ì©ì ì´ì§ë§, í¤-ê° ìì´ ì í¸ëë ë°ì´í°ì ê²½ì°(ìì±ì´ "key"ì ìí ì í¨) í¹ì ê°ì ê°ì§ í¤ê° ìëì§ íì¸íë ¤ë ê²½ì°ì for...inì ì¬ì©í ì ììµëë¤.
ìì for...inì ì¬ì©ìëì ìë ì´ê±° ê°ë¥í non-Symbolìì±ë¤ì ë°ë³µí´ì ìì±ì ì´ë¦ê³¼ ê·¸ ê°ì 기ë¡í©ëë¤.
var obj = { a: 1, b: 2, c: 3 };
for (const prop in obj) {
console.log(`obj.${prop} = ${obj[prop]}`);
}
// Output:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
ìì²´ ìì± ë°ë³µ
ìëë hasOwnProperty()
를 ì¬ì©íë ì를 ë³´ì¬ì£¼ê³ ììµëë¤. ììë ìì±ì íìëì§ ììµëë¤.
var triangle = { a: 1, b: 2, c: 3 };
function ColoredTriangle() {
this.color = "red";
}
ColoredTriangle.prototype = triangle;
function show_own_props(obj, objName) {
var result = "";
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
result += objName + "." + prop + " = " + obj[prop] + "\n";
}
}
return result;
}
o = new ColoredTriangle();
alert(show_own_props(o, "o")); /* alerts: o.color = red */
ëª
ì¸ì ë¸ë¼ì°ì í¸íì± Compatibility: Initializer expressions in strict mode
Prior to Firefox 40, it was possible to use an initializer expression (i=0
) in a for...in
loop:
const obj = { a: 1, b: 2, c: 3 };
for (var i = 0 in obj) {
console.log(obj[i]);
}
// 1
// 2
// 3
This nonstandard behavior is now ignored in version 40 and later, and will present a SyntaxError
("for-in loop head declarations may not have initializers") error in strict mode (bug 748550 and bug 1164741).
Other engines such as v8 (Chrome), Chakra (IE/Edge), and JSC (WebKit/Safari) are investigating whether to remove the nonstandard behavior as well.
See alsoRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4