题目是这样的:
写一函数,输入1时候,输出2,输入2时候,输出1
这题目很简单,也许答案很快就出来了:
function f(n){ if(n == 1) return 2; if(n == 2) return 1;}
非常正确,有更好的方法吗——上面的方法太“平庸”了,看上去好像“没水准”,而且如果很多输入项的话……更巧妙的方法:
function f(n){ return [ , 2, 1][n]; //前面的[]是数组,后面的[n]是下标}
“巧妙”在哪里呢?比如题目改一下:写一函数,按照如下表输出
//输入 输出 111 252 225 514 789 554 999 558//略去N项
这样一来,用第一种方法,得写N+4个if语句……同样上面的“妙招”也不好使了,得写999 - 1个逗号- -|||你想到对策了吗?
//答案是用JSONfunction f(input){return ({ '111':'252', '225':'514', '789':'554', '999':'558' /*略去N项*/})[input];}//另,如果输入项是字符串,比如'haha' 'heihei',也是用JSON来解决
http://www.cn09.com/thread-179-1-1.html
一道JavaScript笔试题的思考
作者:阿良 出处:http://www.cnblogs.com/arliang 本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议 进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。