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]
是不是感觉少写了好多代码呢,你值得拥有哦~~