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]
是不是感觉少写了好多代码呢,你值得拥有哦~~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。