如何写好网站建设方案,wordpress 代码 视频,商洛微网站建设,软件平台开发公司试着不用if撸代码#xff0c;是件很有趣的事#xff0c;而且#xff0c;万一你领会了什么是“数据即代码#xff0c;代码即数据”呢#xff1f;我在教新手编程时#xff0c;喜欢给他们一些小小的挑战#xff0c;比如#xff1a;不使用if语句(或者三元运算符、switch语句… 试着不用if撸代码是件很有趣的事而且万一你领会了什么是“数据即代码代码即数据”呢我在教新手编程时喜欢给他们一些小小的挑战比如不使用if语句(或者三元运算符、switch语句等)解决一些编程问题。这样做有什么意义吗事实上它可以迫使你从不同的角度寻找解决方法也许可以找到更好的方法。当然使用if语句没有任何不对的地方。但是不使用if的话有时候可以增加代码的可读性。这一点并不是绝对的如果完全不使用if语句的话代码可读性也许会更差。这需要你根据不同情况去判断。而且不用if的话不只是影响可读性。在这背后隐含着更加深刻的道理。通过了解本文的代码示例你可以发现如果不使用if语句的话你的代码会更加接近代码即数据的概念。另外当你尝试不使用if语句去编程时也是一件非常有意思的事情。示例1统计数组中的奇数假设我们有一个整数数组arrayOfIntegers现在需要统计其中奇数的个数const arrayOfIntegers [1, 4, 5, 9, 0, -1, 5];使用iflet counter 0;arrayOfIntegers.forEach((integer) { const remainder Math.abs(integer % 2); if (remainder 1) { counter; }});console.log(counter);不用iflet counter 0;arrayOfIntegers.forEach((integer) { const remainder Math.abs(integer % 2); counter remainder;});console.log(counter);不用if时我们巧妙地利用了奇数与偶数的特性它们除以2的余数分别是0和1。示例2 判断工作日和周末给定一个日期(比如new Date())判断它是工作日还是周末分别返回”weekend”和”weekday”。使用ifconst weekendOrWeekday (inputDate) { const day inputDate.getDay(); if (day 0 || day 6) { return weekend; } return weekday; // Or, for ternary fans: // return (day 0 || day 6) ? weekend : weekday;};console.log(weekendOrWeekday(new Date()));不用ifconst weekendOrWeekday (inputDate) { const day inputDate.getDay(); return weekendOrWeekday.labels[day] || weekendOrWeekday.labels[default];};weekendOrWeekday.labels { 0: weekend, 6: weekend, default: weekday };console.log(weekendOrWeekday(new Date()));你是否发现if语句中其实隐含着一些信息呢它告诉我们哪一天是周末哪一天是工作日。因此要去掉if语句的话我们只需要把这些信息写入weekendOrWeekday.labels对象然后直接使用它就好了。广告 如果你需要监控线上JavaScript代码的错误的话欢迎免费使用Fundebug!示例3: doubler函数写一个doubler函数它会根据参数的类型进行不同的操作如果参数是数字则乘以2(i.e. 5 10, -10 -20)如果参数是字符串则每个字符重复2次 (i.e. hello hheelloo)如果参数是函数则调用2次如果参数是数组则将每一个元素作为参数调用doubler函数如果参数是对象则将每个属性值作为参数调用doubler函数使用switchconst doubler (input) { switch (typeof input) { case number: return input input; case string: return input .split() .map((letter) letter letter) .join(); case object: Object.keys(input) .map((key) (input[key] doubler(input[key]))); return input; case function: input(); input(); }};console.log(doubler(-10));console.log(doubler(hey));console.log(doubler([5, hello]));console.log(doubler({ a: 5, b: hello }));console.log( doubler(function() { console.log(call-me); }),);不用switchconst doubler (input) { return doubler.operationsByType[typeof input](input);};doubler.operationsByType { number: (input) input input, string: (input) input .split() .map((letter) letter letter) .join(), function: (input) { input(); input(); }, object: (input) { Object.keys(input) .map((key) (input[key] doubler(input[key]))); return input; },};console.log(doubler(-10));console.log(doubler(hey));console.log(doubler([5, hello]));console.log(doubler({ a: 5, b: hello }));console.log( doubler(function() { console.log(call-me); }),);可知我将每一种参数类型对应的操作绑定到了doubler.operationsByType这样不需要switch语句就可以实现doubler函数了。来源Fundedbug博客链接https://blog.fundebug.com/2017/11/06/write-javascript-without-if/原文https://medium.com/samerbuna/coding-tip-try-to-code-without-if-statements-d06799eed231版权归原作者所有转载仅供学习使用不用于任何商业用途如有侵权请留言联系删除感谢合作。数据与算法之美用数据解决不可能长按扫码关注