vue学习一些疑问的记录


Q:为什么在vue2.20+的版本中,在组件中是用v-for,key是必须的?


A:当Vue.js用v-for正在更新已渲染过的元素列表时,它默认用“就地复用”的策略。如果数据项的顺序被改变,Vue将不是移动DOM元素来匹配数据项的顺序,儿时简单的复用此处的每个元素,并且确保它在待定索引下显示一杯渲染国的每个元素。\
为了给Vue一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有的元素,你需要为每项提供一个唯一的key属性


Q:JS中push(),pop(),unshift(),shift()的联系和区别?


A:联系:这两组同为对数组的操作,并且会改变数组的本身的长度以及内容。\
区别:不同的是push()、pop()是从数组的尾部进行增减,unshift()、shift()是从数组的头部进行增减。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//push()和unshift()是向数组的尾部/头部添加若干元素,并返回素组的新长度
arr.push(3,4); //返回arr的新长度4
arr; //arr = [1,2,3,4]
arr.unshift(0,0.5); //返回 arr 的新长度6
arr; //arr = [0,0.5,1,2,3,4]
//pop()和shift()从数组的尾部/头部删除1个元素(删且只删一个),并返回被删除的元素;空数组是继续删除,不报错,但返回undefined
arr.pop(); //返回4
arr ; //arr = [0,0.5,1,2,3];
arr.pop(); //返回3
arr ; //arr = [0,0.5,1,2];
arr.shift(); //返回0;
arr ; //arr = [0.5,1,2];
//pop()和shift()不接受传参,即使传了参数也没什么用
arr.pop(3) ; //返回2;永远返回最后一个;
arr ;  // arr = [0.5,1];
arr.shift(1);    // 返回 0.5; 永远返回第一个;
arr ;   // arr = [1];
arr.pop() ;  // 返回 1;
arr ;    // arr = [];
arr.shift()  // 返回 undefined;
arr ;    // arr = []


Q:.stop与.self同样都可以阻止冒泡,他们的区别?


A:.stop阻止所有的冒泡行为,而.self只是阻止了自己元素的冒泡行为,没有真正的阻止冒泡。