前言:对于每个case语句写return及break是否有必要?
return 跳出函数,而 break 跳出语句;
举个例子:
- var a = 999;
- function num(n) {
- switch (n) {
- case 1:
- return;
- case 2:
- return;
- case 3:
- break;
- case 4:
- return;
- case 5:
- break;
- default:
- return;
- }
- a++;
- }
- num(3);
- console.log(a);
- num(4);
- console.log(a);
函数体找到 3 匹配,跳出语句,a++ ,a 变成了 1000 ;
接着函数体找到 4 匹配,由于跳出函数体,所以不继续语句 a++,由于上一个函数体改变了 a 值「1000」 ,所以 a = 1000。
这中情况适用于具有优先级的继承方面
继续例子:
- var a = 999;
- function num(n) {
- switch (n) {
- case 1:
- return;
- case 2:
- return;
- case 3:
- break;
- case 4:
- return;
- case 5:
- break;
- default:
- return;
- }
- a++;
- }
- num(4);
- console.log(a);
- num(5);
- console.log(a);
函数体找到 4 ,由于跳出函数,不执行 a++ 所以 a 还是 a「999」;
函数体找到 5 匹配,跳出语句,a++ ,a 变成了 1000 ;
这种情况适用于继承方面。
同样的,如果我们每条添加 return 及 break 会怎么样?
会惊奇的发现,每次返回的结果都是 999;
例子:
- var a = 999;
- function num(n) {
- switch (n) {
- case 1:
- return;
- break;
- case 2:
- return;
- break;
- case 3:
- return;
- break;
- case 4:
- return;
- break;
- case 5:
- return;
- break;
- default:
- return;
- }
- a++;
- }
- num(1);
- console.log(a);
- num(2);
- console.log(a);
- num(3);
- console.log(a);
- num(4);
- console.log(a);
- num(5);
- console.log(a);
因为每次直接返回函数体,语句也中断了,a++ 一直出于打酱油状态。
这种情况适用于准确数据方面。
说了半天,我也不知道应不应该都写 return 和 break 。鬼知道项目要求是什么啊。和规范有半毛钱关系?
完!
评论 (0)