這些優(yōu)化技巧將防止我們?cè)?JavaScript 中過(guò)多地使用 IF 語(yǔ)句
最近在重構(gòu)我的代碼時(shí),我注意到早期的代碼使用了太多的 if 語(yǔ)句,達(dá)到了我以前從未見(jiàn)過(guò)的程度。這就是為什么我認(rèn)為分享這些可以幫助我們避免使用過(guò)多 if 語(yǔ)句的簡(jiǎn)單技巧很重要。
接下來(lái)我們介紹 6 種使用 if 的方法。這不是抵制使用if的偏執(zhí),也不是不讓大家以后不要用IF了,而是換一種方式來(lái)思考我們的編碼思路。
function customerValidation(customer) { if (!customer.email) { return error('email is require') } else if (!customer.login) { return error('login is required') } else if (!customer.name) { return error('name is required') } else { return customer }}
const customerValidation = customer => !customer.email ? error('email is required') : !customer.login ? error('login is required') : !customer.name ? error('name is required') : customer
function getEventTarget(evt) { if (!evt) { evt = window.event; } if (!evt) { return; } const target; if (evt.target) { target = evt.target; } else { target = evt.srcElement; } return target;}
function getEventTarget(evt) { evt = evt || window.event; return evt && (evt.target || evt.srcElement);}
const isOnline = true;const makeReservation= ()=>{};const user = { name:'Damian', age:32, dni:33295000};if (isOnline){ makeReservation(user);}
const isOnline = true;const makeReservation= ()=>{};const user = { name:'Damian', age:32, dni:33295000};isOnline&&makeReservation(user);
const active = true;const loan = { uuid:123456, ammount:10, requestedBy:'rick'};const sendMoney = ()=>{};if (active&&loan){ sendMoney();}
const active = true;const loan = { uuid:123456, ammount:10, requestedBy:'rick'};const sendMoney = ()=>{};active && loan && sendMoney();
function itemDropped(item, location) { if (!item) { return false; } else if (outOfBounds(location) { var error = outOfBounds; server.notify(item, error); items.resetAll(); return false; } else { animateCanvas(); server.notify(item, location); return true; }}
function itemDropped(item, location) { const dropOut = function() { server.notify(item, outOfBounds); items.resetAll(); return false; } const dropIn = function() { server.notify(item, location); animateCanvas(); return true; } return !!item && (outOfBounds(location) ? dropOut() : dropIn());}
switch(breed){ case 'border': return 'Border Collies are good boys and girls.'; break; case 'pitbull': return 'Pit Bulls are good boys and girls.'; break; case 'german': return 'German Shepherds are good boys and girls.'; break; default: return 'Im default'}
const dogSwitch = (breed) =>({ "border": "Border Collies are good boys and girls.", "pitbull": "Pit Bulls are good boys and girls.", "german": "German Shepherds are good boys and girls.", })[breed]||'Im the default';dogSwitch("border xxx")
我們知道在 JS 中函數(shù)是尤其重要,所以使用它,我們也可以將代碼拆分成一個(gè)函數(shù)對(duì)象。如下面一個(gè)改造示例
const calc = { run: function(op, n1, n2) { const result; if (op == "add") { result = n1 + n2; } else if (op == "sub" ) { result = n1 - n2; } else if (op == "mult" ) { result = n1 * n2; } else if (op == "div" ) { result = n1 / n2; } return result; }}calc.run("sub", 5, 3); //2
const calc = { add : function(a,b) { return a + b; }, sub : function(a,b) { return a - b; }, mult : function(a,b) { return a * b; }, div : function(a,b) { return a / b; }, run: function(fn, a, b) { return fn && fn(a,b); }}calc.run(calc.mult, 7, 4); //28
多態(tài)性是一個(gè)對(duì)象具有多種形式的能力。 OOP 中多態(tài)性最常見(jiàn)的用法是使用父類(lèi)引用來(lái)引用子類(lèi)對(duì)象。
const bob = { name:'Bob', salary:1000, job_type:'DEVELOPER'};const mary = { name:'Mary', salary:1000, job_type:'QA'};const calc = (person) =>{ if (people.job_type==='DEVELOPER') return person.salary+9000*0.10; if (people.job_type==='QA') return person.salary+1000*0.60;}console.log('Salary',calc(bob));console.log('Salary',calc(mary));
const qaSalary = (base) => base+9000*0.10;const devSalary = (base) => base+1000*0.60;//Add function to the object.const bob = { name:'Bob', salary:1000, job_type:'DEVELOPER', calc: devSalary};const mary = { name:'Mary', salary:1000, job_type:'QA', calc: qaSalary};console.log('Salary',bob.calc(bob.salary));console.log('Salary',mary.calc(mary.salary));
今天的分享就到這里,這6個(gè)小技巧,是不是很棒呢,你怎么看呢?
本文鏈接:http://www.www897cc.com/showinfo-26-70464-0.htmlJS小知識(shí),使用這六個(gè)小技巧,避免過(guò)多的使用 IF 語(yǔ)句
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com