共计 1478 个字符,预计需要花费 4 分钟才能阅读完成。
try catch throw finally
引:看到过一篇文章说“try catch 的使用,永远应该放在你的控制范围之内,而不应该防范未知的错误。如果让用户先发现你根本没预料到的错误,而不是你先发现错误,你是失职的。”
try 语句测试代码块的错误。catch 语句处理错误。throw 语句创建自定义错误。finally 语句在 try 和 catch 之后无论有无异常都会执行。
首先看一个无异常情况
再来一个自定义抛出异常 不难发现如果异常抛出之后,抛出那段之后的代码是不会执行了
程序报错抛出异常
为什么我们不用 if 呢?还是上图吧,有图有真相
obj.aa.bb.cc 本身已经是 undefined 再往下找自然是没有 dd 的,此时如果是 if 就会报错并中断程序。而 try catch 不会。
若是我们要使 if 的判断执行下去,则需要写成 if(obj && obj.aa && obj.aa.bb & &obj.aa.bb.dd), 而 try cacth 则不需要考虑这些。
&& 和 ||
这俩的含义不用解释了吧,且和或,主要是讲用 && 和 || 来节省 if else 的写法
if(a === 1){
conosle.log(‘a=1’)
}
可以写为 a===1 && conosle.log(‘a=1’)
或:
if(a===1 || a === 2){
console.log(‘a=’+a)
}
可以写为 (a===1 || a===2) && console.log(‘a=’+a)
赋值也是可以的 a===1 && (b=1)、(a===1 ||a===2) && (b=1) 我们会经常发现一个赋值 a = b ||” b 若为真,a=b , 否则 a = ”
if else pk switch
switch 完胜
对 swtch 的简写
var b = [];
switch(area){
case 2:
b = [‘ 重庆市 ’, ‘ 福建省 ’, ‘ 山东省 ’, ‘ 内蒙古省 ’, ‘ 上海市省 ’]
break;
case 3:
b = [‘ 北京市 ’, ‘ 西北省 ’, ‘ 甘肃省 ’, ‘ 云南省 ’, ‘ 宁夏省 ’, ‘ 西藏省 ’, ‘ 青海省 ’,]
break;
case 4:
b = [‘ 四川省 ’, ‘ 辽宁省 ’, ‘ 黑龙江省 ’, ‘ 吉林省 ’, ‘ 河北省 ’, ‘ 山西省 ’]
break;
省略 ……
}
明明都是给 b 赋值,为什么不能简单点呢?答案当然是可以了!我是江小白,世界很简单!!
用对象的方式组装一下:
let object = {
1: [‘ 重庆市 ’, ‘ 福建省 ’, ‘ 山东省 ’, ‘ 内蒙古省 ’, ‘ 上海市省 ’],
2: [‘ 北京市 ’, ‘ 西北省 ’, ‘ 甘肃省 ’, ‘ 云南省 ’, ‘ 宁夏省 ’, ‘ 西藏省 ’, ‘ 青海省 ’,],
3: [‘ 四川省 ’, ‘ 辽宁省 ’, ‘ 黑龙江省 ’, ‘ 吉林省 ’, ‘ 河北省 ’, ‘ 山西省 ’],
4: [‘ 河南省 ’, ‘ 江苏省 ’, ‘ 安徽省 ’, ‘ 广西省 ’],
5: [‘ 新疆省 ’, ‘ 江西省 ’, ‘ 浙江省 ’],
6: [‘ 陕西省 ’, ‘ 辽宁省 ’, ‘ 湖南省 ’],
7: [‘ 广东省 ’, ‘ 贵州省 ’, ‘ 湖北省 ’, ‘ 河南省 ’, ‘ 海南省 ’, ‘ 天津市 ’]
}
b = object[area]
如果你是规律的 1234567,那么你还可以用数组哦
let arr = [
[‘ 重庆市 ’, ‘ 福建省 ’, ‘ 山东省 ’, ‘ 内蒙古省 ’, ‘ 上海市省 ’],
[‘ 北京市 ’, ‘ 西北省 ’, ‘ 甘肃省 ’, ‘ 云南省 ’, ‘ 宁夏省 ’, ‘ 西藏省 ’, ‘ 青海省 ’,],
[‘ 四川省 ’, ‘ 辽宁省 ’, ‘ 黑龙江省 ’, ‘ 吉林省 ’, ‘ 河北省 ’, ‘ 山西省 ’],
[‘ 河南省 ’, ‘ 江苏省 ’, ‘ 安徽省 ’, ‘ 广西省 ’],
[‘ 新疆省 ’, ‘ 江西省 ’, ‘ 浙江省 ’],
[‘ 陕西省 ’, ‘ 辽宁省 ’, ‘ 湖南省 ’],
[‘ 广东省 ’, ‘ 贵州省 ’, ‘ 湖北省 ’, ‘ 河南省 ’, ‘ 海南省 ’, ‘ 天津市 ’]
]
b = arr[area]
是不是感觉少写了好多代码呢,你值得拥有哦~~