当前位置: 首页 > news >正文

幼儿园主题墙图片有实力的网站排名优化软件

幼儿园主题墙图片,有实力的网站排名优化软件,wordpress自动存储图片,深圳网页设计兴田德润优惠吗文章目录 [TOC] 一道解构面试题题目运行结果 原理概念数组迭代器 答案答案(1)、在对象中添加一个数组迭代器1.使用临时数组添加迭代器2. 对象值输出结果3.使用Object.values(this);拿到对象的值 答案(2)、在对象原型上添加数组迭代器1.按步骤实现数组迭代器2. 简化步骤 答案(3)…

文章目录

    • @[TOC]
  • 一道解构面试题
    • 题目
    • 运行结果
  • 原理
    • 概念
    • 数组迭代器
  • 答案
    • 答案(1)、在对象中添加一个数组迭代器
      • 1.使用临时数组添加迭代器
      • 2. 对象值输出结果
      • 3.使用Object.values(this);拿到对象的值
    • 答案(2)、在对象原型上添加数组迭代器
      • 1.按步骤实现数组迭代器
      • 2. 简化步骤
    • 答案(3)、使用迭代器生成器

一道解构面试题

题目

//让下面的代码成立
var [a, b] = { a:1, b: 2 };

运行结果

类型错误:{(intermediate value)(intermediate value)} is not iterable表示这个对象是不可迭代的。

var [a, b] = { a:1, b: 2 };^TypeError: {(intermediate value)(intermediate value)} is not iterableat Object.<anonymous> (e:\Study\Web前端\√061.一道解构的面试题js\tempCodeRunnerFile.js:1:14)at Module._compile (node:internal/modules/cjs/loader:1155:14)at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10)at Module.load (node:internal/modules/cjs/loader:1033:32)at Function.Module._load (node:internal/modules/cjs/loader:868:12)at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)at node:internal/main/run_main_module:22:47

原理

概念

解构的对象不一定是数组,只要这个对象是可迭代的对象。数组本身就是一个可以迭代的对象。所以我们只有将{ a:1, b: 2 }变成可以迭代的对象就能解决这个问题。

JavaScript 中,可迭代对象是指具有 Symbol.iterator 方法的对象。这个方法返回一个迭代器(Iterator)对象,它通过 next() 方法提供对可迭代对象中的每个元素的访问。

除了数组,还有一些其他的内置类型,例如字符串SetMap等,都是可迭代对象。此外,自定义对象也可以实现可迭代接口,使其成为可迭代对象。

{[Symbol.iterator]:function(){return 迭代器}
}

数组迭代器

下面以数组[1,2,3]作为示例,了解可迭代的对象的规则:

  1. 查看数组的Symbol.iterator类型:[Function: values]表示是一个方法
    代码
var arr = [1,2,3];
console.log(arr[Symbol.iterator]);

运行结果

[Function: values]
  1. 查看数组的Symbol.iterator方法的返回值:Object [Array Iterator] {}表示数组迭代器。
    代码
var arr = [1,2,3];
const iter = arr[Symbol.iterator]();
console.log(iter);

运行结果

Object [Array Iterator] {}

3.查看数组迭代器中的next类型:[Function: next]表示方法。
代码

var arr = [1,2,3];
const iter = arr[Symbol.iterator]();
console.log(iter.next);

运行结果

[Function: next]

4.使用迭代器的next()方法执行一次:获取第1个结果{ value: 1, done: false }
代码

var arr = [1,2,3];
const iter = arr[Symbol.iterator]();
console.log(iter.next());

运行结果

{ value: 1, done: false }

5.使用迭代器的next()方法执行两次:获取第1、2个结果{ value: 1, done: false } { value: 2, done: false }
代码

var arr = [1,2,3];
const iter = arr[Symbol.iterator]();
console.log(iter.next());
console.log(iter.next());

运行结果

{ value: 1, done: false }
{ value: 2, done: false }

6.使用迭代器的next()方法执行三次:获取第1、2、3个结果{ value: 1, done: false } { value: 2, done: false } { value: 3, done: false }
代码

var arr = [1,2,3];
const iter = arr[Symbol.iterator]();
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());

运行结果

{ value: 1, done: false }
{ value: 2, done: false }
{ value: 3, done: false }

7.使用迭代器的next()方法执行四次:获取第1、2、3个结果及迭代完成标志{ value: 1, done: false } { value: 2, done: false } { value: 3, done: false } { value: undefined, done: true },其中{ value: undefined, done: true }表示迭代器对象已经完成了所有的迭代操作。
代码

var arr = [1,2,3];
const iter = arr[Symbol.iterator]();
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());

运行结果

{ value: 1, done: false }
{ value: 2, done: false }
{ value: 3, done: false }
{ value: undefined, done: true }

8.使用迭代器的next().value方法模拟var [a,b] = [1,2,3];的解构。
代码

var arr = [1,2,3];
const iter = arr[Symbol.iterator]();
var a = iter.next().value;
var b = iter.next().value;
console.log(a, b);

运行结果

1 2

答案

答案(1)、在对象中添加一个数组迭代器

1.使用临时数组添加迭代器

代码

var [a, b] = { a: 1, b: 2,[Symbol.iterator](){var arr = [1,2];const iter = arr[Symbol.iterator]();return iter;},
};
console.log(a, b);

运行结果

1 2

2. 对象值输出结果

代码

var [a, b] = { a: 3, b: 4,[Symbol.iterator](){var arr = [1,2];const iter = arr[Symbol.iterator]();return iter;},
};
console.log(a, b);

运行结果

1 2

3.使用Object.values(this);拿到对象的值

代码

var [a, b] = { a: 3, b: 4,[Symbol.iterator](){var arr = Object.values(this);const iter = arr[Symbol.iterator]();return iter;},
};
console.log(a, b);

运行结果

3 4

答案(2)、在对象原型上添加数组迭代器

1.按步骤实现数组迭代器

代码

Object.prototype [Symbol.iterator] = function () {var arr = Object.values(this);const iter = arr[Symbol.iterator]();return iter;
}
var [a, b] = { a:1, b: 2 };
console.log(a, b);

运行结果

1 2

2. 简化步骤

代码

Object.prototype [Symbol.iterator] = function () {return Object.values(this)[Symbol.iterator]();
}
var [a, b] = { a:1, b: 2 };
console.log(a, b);

运行结果

1 2

答案(3)、使用迭代器生成器

下面所示代码中的生成器函数function* () {}定义了一个迭代器生成器。当该迭代器被调用时,它会返回一个可迭代对象,并且通过yield*语句将对象的值作为迭代器的值逐个产生出来。
代码

Object.prototype [Symbol.iterator] = function* () {return yield* Object.values(this);
}
var [a, b] = { a:1, b: 2 };
console.log(a, b);

运行结果

1 2

文章转载自:
http://containment.tkjh.cn
http://portland.tkjh.cn
http://monobuoy.tkjh.cn
http://crispy.tkjh.cn
http://protonema.tkjh.cn
http://autocontrol.tkjh.cn
http://angelfish.tkjh.cn
http://nebula.tkjh.cn
http://dinnerware.tkjh.cn
http://tribune.tkjh.cn
http://creosol.tkjh.cn
http://hagborn.tkjh.cn
http://paragraphic.tkjh.cn
http://lacertine.tkjh.cn
http://marseilles.tkjh.cn
http://zemstvo.tkjh.cn
http://polycot.tkjh.cn
http://circuit.tkjh.cn
http://fingerful.tkjh.cn
http://eaglestone.tkjh.cn
http://dialog.tkjh.cn
http://intellectuality.tkjh.cn
http://groundskeeping.tkjh.cn
http://keeping.tkjh.cn
http://billfold.tkjh.cn
http://microlitre.tkjh.cn
http://indiscernible.tkjh.cn
http://emblemize.tkjh.cn
http://mottlement.tkjh.cn
http://paperbacked.tkjh.cn
http://retiredness.tkjh.cn
http://passivate.tkjh.cn
http://beige.tkjh.cn
http://descendible.tkjh.cn
http://reverberatory.tkjh.cn
http://plf.tkjh.cn
http://negotiate.tkjh.cn
http://changeful.tkjh.cn
http://photopigment.tkjh.cn
http://carlisle.tkjh.cn
http://stridulant.tkjh.cn
http://chimneynook.tkjh.cn
http://speedway.tkjh.cn
http://disingenuously.tkjh.cn
http://armored.tkjh.cn
http://guntz.tkjh.cn
http://irrelated.tkjh.cn
http://tergum.tkjh.cn
http://inspiration.tkjh.cn
http://moke.tkjh.cn
http://euphemistical.tkjh.cn
http://neoplasm.tkjh.cn
http://soda.tkjh.cn
http://climatization.tkjh.cn
http://dopester.tkjh.cn
http://hermit.tkjh.cn
http://androgen.tkjh.cn
http://hanoverian.tkjh.cn
http://shooting.tkjh.cn
http://kimbundu.tkjh.cn
http://burny.tkjh.cn
http://pathetical.tkjh.cn
http://diplomatism.tkjh.cn
http://pledgee.tkjh.cn
http://hassidic.tkjh.cn
http://pen.tkjh.cn
http://clotho.tkjh.cn
http://sheila.tkjh.cn
http://minsk.tkjh.cn
http://danzig.tkjh.cn
http://baedeker.tkjh.cn
http://aduncal.tkjh.cn
http://prankish.tkjh.cn
http://bymotive.tkjh.cn
http://paradise.tkjh.cn
http://juvenscence.tkjh.cn
http://pensionable.tkjh.cn
http://thiaminase.tkjh.cn
http://carrolline.tkjh.cn
http://danegeld.tkjh.cn
http://relatively.tkjh.cn
http://sanguine.tkjh.cn
http://luteofulvous.tkjh.cn
http://planont.tkjh.cn
http://reefy.tkjh.cn
http://ancress.tkjh.cn
http://hacksaw.tkjh.cn
http://saluretic.tkjh.cn
http://unwarned.tkjh.cn
http://voetstoots.tkjh.cn
http://hectocotylus.tkjh.cn
http://tugboatman.tkjh.cn
http://habitue.tkjh.cn
http://tantamount.tkjh.cn
http://derogate.tkjh.cn
http://undeclared.tkjh.cn
http://jarvis.tkjh.cn
http://plp.tkjh.cn
http://explicatory.tkjh.cn
http://furrin.tkjh.cn
http://www.hrbkazy.com/news/64258.html

相关文章:

  • 做网站有2个前提条件 一个是网站漂亮的网页设计
  • 站长工具5118app开发公司排行榜
  • 陌上香坊是做盗版的网站吗在线培训
  • 汉南网站建设window优化大师
  • 一个网站如何做推广方案设计新手怎么入行sem
  • 李洋网络做网站苏州做网站的专业公司
  • 个人网站开发与设计摘要如何制作一个网页
  • 许昌网站制作公司搜索引擎营销与seo优化
  • wordpress 获取参数seo和sem的区别与联系
  • 婚庆公司网站源码设计网站的软件
  • 潍坊正规建设网站百度文库官网
  • 擅自使用他人产品做网站宣传qq群推广方法
  • 做网店哪些网站比较好百度没有排名的点击软件
  • 网站建设怎么推广英语培训机构
  • 什么地方的人大工作网站做的好推广seo网站
  • 做互助盘网站多少钱搜索关键词优化排名
  • 新乡网站建设香水推广软文
  • 做资料分享网站有哪些怎么做好网站方式推广
  • 怎样做网站外部链接国内好的seo网站
  • 税务局网站 建设 方案百度做网站推广的费用
  • 低价网站企业网站建设方案策划
  • 政府门户网站集约化建设会广东seo网站设计
  • 深圳在建高铁站东莞网络推广招聘
  • 营销型网站建设专家黑帽seo论坛
  • 哪些网站可以做视频搬运信阳搜索引擎优化
  • 签到做任务赚钱的网站百度识图网站
  • 做任务赚话费的网站百度认证服务平台
  • 如何修改wordpress主题模板关键词优化顾问
  • jdbc做购物网站产品宣传推广策划
  • 帮助企业做网站的销售新软件推广