JavaScript最难的东西是什么_学习

CSS样式是表现。就像网页的外衣。比如,标题字体、颜色变化,或为标题加入背景图片、边框等。所有这些用来改变内容外观的东西称之为表现。

JavaScript最难的东西是什么_数组_02

动态交互:JavaScript基础的学习

JavaScript是用来实现网页上的特效效果。如:鼠标滑过弹出下拉菜单。或鼠标滑过表格的背景颜色改变。还有焦点新闻(新闻图片)的轮换。可以这么理解,有动画的,有交互的一般都是用JavaScript来实现的。

JavaScript最难的东西是什么_前端_03

console.log(item);
}

甚至你也可以写成这样:

for(const item of menu) console.log(item);

![]()


for-of循环的注意事项📋:


注意:在普通循环♻️和for-of循环中,你还是可以使用break或continue关键字在设定的情况下跳出循环,但是在之后的for-each循环中你将不能做这些


##### 初识`entries()`


实际上,`for-of`循环之所以可以做到不设立和操作索引变量`index`就可以遍历整个数组集合。`entries()`方法功不可没。实际上在JavaScript中,`entries()`是一个数组迭代器。
// 如何在for-of循环中获取元素的索引
 for (const item of menu.entries()) {
 console.log(item);
 }
![]()



![]()


`entries()`方法会将获取到的数组或对象整合到一个对象中,并将他们编排成一个带索引序号和元素内容的一个数组,通过访问对象内数组的第一个元素即可得到索引序号,访问第二个元素即可得到数组中包含的内容。

// menu.entries()到底是什么
// 用console.log(menu.entries()); 会返回一个数组迭代器
console.log([…menu.entries()]); // 探究👀entries()方法下的数组迭代器内部是什么样子

![]()


既然这样,如果我们将刚刚得到的`menu`菜单数组进行遍历,如果我们不了解`for-of`循环的运行原理,我们只能这样写:

// 利用for-of循环打印一个菜单
// 旧式写法
for (const item of menu.entries()) {
console.log(${item[0] + 1}: ${item[1]});
}

![]()


实际上,通过`entries()`方法,我们可以对数组进行解构操作。将得到的`item`的每一项分解成`i`和`el`。通过变量`i`获取每一个数组中的第一个元素——即序号;通过变量`el`获取每个数组中的第二个元素——即内容和值。


对于这个数组来说,`item`中的第一个元素一定是`1,2,3...`等序号,第二个元素就是序号对应的菜品和食物🍜。

//新写法
//因为在for-of-loop中已经将menu数组解构成索引加内容的样式,所以直接用变量去替代
//索引序号即可
for (const [i, el] of menu.entries()) {
console.log(${i + 1}: ${el});
}

测试结果,两次输出的结果是一样的。



![]()


##### 使用for-of循环遍历对象内属性


使用`for-of`循环同样可以遍历对象内部的属性。实际上对象内部的属性也可以被称为键,而属性对应的内容称为值。通过`for-of`循环可以通过`键值对`的方式逐次遍历对象内部的属性。


*对象*`restaurant` *:*
const weekdays = [‘Mon’, ‘Tue’, ‘Wed’, ‘Thu’, ‘Fri’, ‘Sat’, ‘Sun’];
 const openingHours = {
 [weekdays[3]]: {
 open: 12,
 close: 22,
 },
 [weekdays[4]]: {
 open: 11,
 close: 23,
 },
 [weekdays[5]]: {
 open: 0, // Open 24 hours
 close: 24,
 },
 };
 const restaurant = {
 name: ‘意大利🇮🇹经典’,
 location: ‘Via Angelo Tavanti 23, 佛罗伦萨, 意大利’,
 categories: [‘意大利’, ‘比萨店’, ‘素食’, ‘有机’],
 starterMenu: [‘佛卡夏’, ‘意式烤面包’, ‘大蒜面包’, ‘卡普雷塞沙’],
 mainMenu: [‘披萨’, ‘意大利面’, ‘烩饭’],
 // ES6 enhanced object literals
 openingHours,
 // 新的对象属性名写法
 order(starterIndex, mainIndex) {
 return [this.starterMenu[starterIndex], this.mainMenu[mainIndex]];
 },


};

目前在`restaurant`对象中具有`openingHours`这个属性,通过`for-of`循环可以将`openingHours`属性内的对象和元素依次解构。


*通过for-of循环* *♻️* *遍历*`restaurant`*对象中的*`openingHours`*属性*

for (const day of Object.keys(openingHours)) {
console.log(day);
}

![]()


##### 利用Object.keys()获取到对象中的属性(键)


而且,通过`Object.keys()`方法获取到的键值会将他们集成到一个数组中,因此对数组可以进行的操作,同样适用于此。

const properties = Object.keys(openingHours);
console.log(properties);

console.log(We are open on ${properties.length} days我们店铺开${properties.length}天。);

![]()


另外,获取到的键值对依然可以附加到字符串中,这并不影响字符串的连接。`for-of`循环会将遍历得到的键值附加到字符串的末尾。

for (const day of properties) {
openStr += ${day},;
}
console.log(openStr);

![]()


##### 利用Object.values()获取对象属性中的值
// Property VALUES
 const values = Object.values(openingHours);
 console.log(values);
![]()


这些值正好是`restaurant`对象下的`openingHours`属性中的键和值:
const weekdays = [‘Mon’, ‘Tue’, ‘Wed’, ‘Thu’, ‘Fri’, ‘Sat’, ‘Sun’];
 const openingHours = {
 [weekdays[3]]: {
 open: 12,
 close: 22,
 },
 [weekdays[4]]: {
 open: 11,
 close: 23,
 },
 [weekdays[5]]: {
 open: 0, // Open 24 hours
 close: 24,
 },
 };
Object.values()方法会将每个获取到的属性对象封装📦到一个数组中,通过数组访问索引的方式可以依次将属性对应的值和内容取出。
const values = Object.values(openingHours);
 console.log(values[0]);
![]()


##### 进一步分析`entries()`方法
// Entries object
 const entries = Object.entries(openingHours);
 console.log(entries);for (const x of entries) {
 console.log(x); // 遍历entries获取到其中的每个值
 }
对于遍历对象中的属性值和方法,通过`entries()`会返回一个对象,在数组中依次装载着对象的属性值(键)和对应的值。就类似于这样:



#### 结束  

一次完整的面试流程就是这样啦,小编综合了腾讯的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析,分享给小伙伴们,有没有需要的小伙伴们都去领取!

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】]()**

![]()



中依次装载着对象的属性值(键)和对应的值。就类似于这样:



#### 结束  

一次完整的面试流程就是这样啦,小编综合了腾讯的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析,分享给小伙伴们,有没有需要的小伙伴们都去领取!

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】]()**

![]()