请问以下JS代码最终输出的结果是() const arr = [117]; arr.ops = 935; arr.__proto__.func = 130; for(let item in arr) {   if (item === 0) {     console.log(undefined);     break;   }   console.log(arr[item]); }; for(let item of arr) {   console.log(item); };

区块链毕设网qklbishe.com为您提供问题的解答

请问以下JS代码最终输出的结果是()
const arr = [117]; arr.ops = 935; arr.__proto__.func = 130; for(let item in arr) {   if (item === 0) {     console.log(undefined);     break;   }   console.log(arr[item]); }; for(let item of arr) {   console.log(item); };

简要地说,**原因在于 `for in` 会遍历到包括自定义和原型上的可枚举属性**,而 `for of` **只遍历数组的元素**。具体过程如下: 1. `arr = [117]`:数组本身有下标 `"0"`,值 `117`。 2. `arr.ops = 935;`:给数组实例添加可枚举自定义属性 `"ops"`,值 `935`。 3. `arr.__proto__.func = 130;`:给数组原型添加可枚举属性 `"func"`,值 `130`,因此所有数组在 `for (… in …)` 时都能枚举到这个属性。 然后看两段循环: – **`for (let item in arr)`**:遍历可枚举属性,包括“0”、“ops”以及原型上的“func”。 – 这里要注意,`item` 是字符串,例如 `"0"`、`"ops"`、`"func"`,跟 `if (item === 0)` 里的数字 0 不会相等,因此不会执行 `break`。 – 因此它会依次打印 `arr["0"] -> 117`, `arr["ops"] -> 935`, `arr["func"] -> 130`。 – **`for (let item of arr)`**:只遍历数组的**实际元素**(即数组下标对应的值),所以只会打印 `117`。 合在一起的输出顺序就是:**`117, 935, 130, 117`**,这也正是选项 C 给出的结果。
55:10

以上就是关于问题请问以下JS代码最终输出的结果是() const arr = [117]; arr.ops = 935; arr.__proto__.func = 130; for(let item in arr) {   if (item === 0) {     console.log(undefined);     break;   }   console.log(arr[item]); }; for(let item of arr) {   console.log(item); };的答案

欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程

区块链NFT链游项目方科学家脚本开发培训

从业7年-专注一级市场


微信:btc9767
TELEGRAM :https://t.me/btcok9

具体资料介绍

web3的一级市场千万收益的逻辑


进群点我



qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 请问以下JS代码最终输出的结果是() const arr = [117]; arr.ops = 935; arr.__proto__.func = 130; for(let item in arr) {   if (item === 0) {     console.log(undefined);     break;   }   console.log(arr[item]); }; for(let item of arr) {   console.log(item); };