FCC小题目代码优化:进一步了解了&&与 || 中的表达式不可以出现赋值现象,否则JS报错

 

FCC小题目代码优化:Record Collection这一题

 


 

 

01.使用if...else解决的

//使用if...else解决的

function
update(id, prop, value) { if(value ===""){ delete collectionCopy[id][prop]; }else{ if(prop === 'tracks'){ collectionCopy[id][prop].push(value); }else{ collectionCopy[id][prop]=value; } } return collectionCopy; }

 

02.使用&& 与 || 去解决(纯&& || 无法解决) 

觉得用if...else...去解决,代码不够少,尝试着用 && 与 || 去解决

 

function update(id, prop, value) {
  prop === 'tracks' && collectionCopy[id][prop].push(value) || collectionCopy[id][prop]=value; 
  value ==="" && delete collectionCopy[id][prop];
   return collectionCopy;
}
//这行代码浏览器报错:Uncaught ReferenceError: Invalid left-hand side in assignment
prop === 'tracks' && collectionCopy[id][prop].push(value) || collectionCopy[id][prop]=value;

 

花了很长的时间去解决都没有办法解决:最后知道是怎么回事了!!!

原因:&& 与 || 的运算子中的表达式不可以出现赋值的情况( collectionCopy[id][prop]=value ),只能放弃使用 && || ;

 

03.三元运算符( ?:)解决

//第一种写法:只使用三元运算符;

function
update(id, prop, value) { value ===""? delete collectionCopy[id][prop]:( prop === 'tracks'? collectionCopy[id][prop].push(value) : collectionCopy[id][prop]=value); return collectionCopy; }

 

 

//第一种写法:只使用三元运算符;
function update(id, prop, value) {
    prop === 'tracks'? collectionCopy[id][prop].push(value) : collectionCopy[id][prop]=value;
    value ==="" && delete collectionCopy[id][prop];
}

  

 

posted @ 2018-03-26 21:10  思行合一  阅读(171)  评论(0)    收藏  举报