题目是这样的:

写一函数,输入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个逗号- -|||
你想到对策了吗?

View Code
//答案是用JSON
function 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笔试题的思考

作者: Arliang 发表于 2011-07-24 00:41 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"