Actually,simplicity is not simple

JS中函数调用的奇异写法

今天看不到一JS代码很是奇异,很久后才明白它的意思,佩服写这Coder,

$('#tip')[['show','hide'][$.getCookie('tip')]]();

这代码是基于jQuery的,要理解就得知道拆分,$('#tip')是jQuery的选择器,$.getCookie('tip')是使用jQuery的Cookie的插件,返回的是数值0、1,这些都不用多说。

主要看这部分[['show','hide'][1]](),如何拆呢?这也是让我想了一段时间的原因,如果作者这样写相信很多人一下就能明白。

$('#tip')['show']();

这不就是使用数组的方式调用函数嘛!再看中间[['show','hide'][1]],这下就明白了,只不是个数组吧了!

这代码的全意就是将一个jQuery的object的两个属性创建了一个数组,然后由$.getCookie('tip')的值进行选择,再应用jQuery的函数。拆分为一般的写法就像下面这样:

$.getCookie('tip') ? $('#tip').hide() : $('#tip').show();

有点绕,呵呵,但对于熟悉JS的调用很好处!