除了if语句,还有一种条件判断,是根据某个表达式的结果,分别去执行不同的分支。 例如: 在游戏中,让用户在选择选项:
- 单人模式;
- 多人模式;
- 退出游戏。 这时候switch就派上用场了: switch语句根据switch(表达式)计算的结果,跳转到匹配的case结果,然后继续执行后续语句,知道遇到break结束执行。 看下面的例子:
timeLabel:currentTab.label;
let timeObj = {};
switch (queryData.timeLabel) {
case '昨天': timeObj = getTime(queryData.timeLabel);
break;
case '今天':
timeObj = getTime(queryData.timeLabel);
break;
case '前七天': timeObj.startTime = getTime(-8).startTime; timeObj.endTime = getTime(-1).endTime;;
break;
default:
timeObj = getTime('今天');
break;
}
- 如果
queryData.timeLabel是昨天,执行timeObj...,然后...,结束; - 如果
queryData.timeLabel是今天,执行timeObj...,那么久...,结束; - 如果
queryData.timeLabel是前七天,执行timeObj...,那么就...,结束。 - 默认的是今天
timeLable的处理
<view @tap="$to('/pages/today-bad/today-bad',
{ timeLabel:currentTab.label,
pageLabel: '不良品'})"}
对timeLabel里面的current的处理
computed: {
// 当前tab
currentTab() {
return this.tabs.find(
tab => tab.value == this.tabValue
)
}
find的用法
find()方法,用于查找符合条件的第一个元素,如果找到了,返回这个元素,否则返回undefined:
var arr = ['Apple','pear','orange'];
console.log(
arr.find(function(s){
return s.tolowerCase() === s;
}));
//'pear',因为pear全部是小写
console.log(arr.find(function (s) {
return s.toUpperCase() === s;
})); // undefined, 因为没有全部是大写的元素
- arr是一个数组,在数组里面find寻找一个东西设为s
- 这个东西是s:把s里面的内容变成小写之后,还是s;
- 结果是pear,因为它里面全是小写,并且还是第一个
箭头函数
ES6标准新增了一个函数:Arrow Function(箭头函数)
X => X*X
上面的箭头函数相当于:
function(x){
return x * x
}
所以下面案例这样理解
tab => tab.value == this.tabValue
function(tab){
return tab.value == this.tabValue
}
find案例综合理解
return this.tabs.find(
tab => tab.value == this.tabValue
)
--------------------
return this.tabs.find(
function(tab){
return tab.value == this.tabValue
}
)
比较运算符 ==
当我们对Number作比较时,可以通过比较运算符得到一个布尔值: 比较运算符的意义就是得到true或者false。
2 > 5; // false
5 >= 2; // true
7 == 7; // true
实际上,JavaScript允许对任意数据类型做比较:
false == 0; // true
false === 0; // false
要特别注意相等运算符==:
-
第一种是
==比较,他会自动转换数据类型再比较,很多时候会得到比较诡异的结果; -
第二种是
===比较,他不会自动转换数据类型,如果数据类型不一致,返回false,如果类型一致在比较; -
所以尽量使用第二种。
let queryData = this.$Route.query //this.$Route指定的是today-bad這個網頁,query獲取url查詢參數串 ```
!运算符
!可将变量转换成boolean布尔类型,null、undefined和空字符串取反都为true,其余都为false。
就能和上面达到同样的效果。a是有实际含义的变量才执行方法,否则变量null,undefined和'' "空串都不会执行以下代码。
可以总结出来,“!”是逻辑与运算,并且可以与任何变量进行逻辑与将其转化为布尔值,“!!”则是逻辑与的取反运算,尤其后者在判断类型时代码简洁高效,省去了多次判断null、undefined和空字符串的冗余代码。
所以开头的代码中,!!value , 先将value转成取反的布尔值,将得到的布尔值再次取反,保证value的值为null,undefined和空字符串的情况下,if体中的代码不会执行。