iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0
自我挑戰組

Be friend with JavaScript系列 第 18

Day 18 - for in & for of loop

for in

可以用在 object,也可以用在 Array

  • 使用 for in 列舉一個 object 的 property
let obj = {
  name:"Mary",
  number:20
};
for(let i in obj){
  console.log(i);
}
// name
// number
  • 使用 for in 列舉在 object 裡 property 的 value
let obj = {
  name:"Mary",
  number:20
};
for(let i in obj){
  console.log(obj[i]);
}
// Mary
// 20

在 object 內可以被列舉出的 properties 都是 variable 所代表的涵義
以下面的例子來看,num 這個 array 的 property 是 i 這個變數代表的涵義,所以結果只會有 0 1 2

let num = [10,35,50];
for(let i in num){
  console.log(i)
}
// 0
// 1
// 2

如果要找到 10,35,50 這三個數字的話,則要改成下面這樣

let num = [10,35,50];
for(let i in num){
  console.log(num[i])
}
// 10
// 35
// 50

for of

for of 只能用於 iterable objects(可迭代的物件),例如:String, Array, Map, Set, Nodelist...等。

  • 陣列迭代
let numbers = [1,2,3];
for(let i of numbers){
  console.log(i);
}
// 1
// 2
// 3
  • 字串迭代
let text = "happy";
for(let i of text){
  console.log(i);
}
// h
// a
// p
// p
// y
  • 如果對物件做 for of 會出錯,因為物件是不可迭代的
let obj = {
  name:"Harry",
  age: 20
};
for(let i of obj){
  console.log(i);
}

執行上面的程式碼,會顯示 Uncaught TypeError: obj is not iterable

補充:
關於 Map 和 Set 可以參考 Map and Set


上一篇
Day 17 - Primitive and Reference
下一篇
Day 19 - Execution Context
系列文
Be friend with JavaScript39

尚未有邦友留言

立即登入留言