JavaScript中圆括号()和方括号[]的一个特殊用法

缘由:

    JS这个语言实在过于灵活,当然其不足之处也有很多。当今各种开源JS脚本铺天盖地,所以很多人的编程风格一下涌到你面前,特别是那些大师级的JS编码风格与技巧。

    在最近分析NIKE这个网站源码时,看到了如下数组表达方式:

// always trusted origins, can be exact strings or regular expressions

var alwaysTrustedOrigins = [(/\.nike.com/),

    (/\.nikedev.com/),

    (/\.nike.com.tw/),

    (/\.swoosh.com/),

    (/\.nikeid.com/),

    (/\.facebook.com/),

    (/\.rga.com/),

    (/\.custhelp.com/)];

 

使用上面定义的代码如下:

 var alwaysTrusted = false, i = alwaysTrustedOrigins.length;

            while (i-- && !alwaysTrusted) {

                if (alwaysTrustedOrigins[i] instanceof RegExp) {

                    alwaysTrusted = alwaysTrustedOrigins[i].test(remote.origin);

                }

                else if (typeof alwaysTrustedOrigins[i] == "string") {

                    alwaysTrusted = (remote.origin === alwaysTrustedOrigins[i]);

                }

            }

 

显然,操作方式还是标准数组方式,但是数组元素就‘成为’两种数据类型。本质上上面表达仍然是对象类型,但是从接下来的应用代码可以看出,这种表达方式实现了两种情况下需求:

 

 在支持RegExp对象的环境下与不支持RegExp对象的环境下。

 

注意:上面使用的运算会可不一样:分别是instanceof  和typeof,需要结合JS的自动类型转换进行理解才对哟!

 

结论:上面是一种不错的数组元素表达技巧,一下考虑了环境是否兼容RegExp对象的两种环境下的编码,有意思!

 

另有引文如下,供大家一并参考(引文URL:http://www.jb51.net/article/40358.htm)。

大家对JavaScript中圆括号() 和 方括号[] 的特殊用法或许有些疑问,本文就带着这些疑问为大家详细介绍下,有疑问的朋友可不要错过了哈。

 

(1, 2, 3);
// return 3; 很好奇,为什么会返回3?这是什么机制?圆括号起到了什么作用?

(1, 2, 3, alert )("Amazing!");
// 这里就更好玩了,居然可以直接调用alert ;经过测试,全局函数都可以通过这样调用。

下面是关于 方括号[] 的疑问:
在JS中,[]几乎就和数组画上了等号,但也有神奇的时候。

[1,2,3][1];
// return 2; 当然这种方法也经常使用,常用于数组的索引 和 调用的对象的响应属性名存放在某个变量时。
[1,2,3][1,2];

//return 3 ; 这种情况就有趣多了,和上面圆括号的情况很像,都会返回括号内的最后一个值

在(1,2,3)里,括号和逗号都是运算符,逗号运算符返回最后一个表达式的求值结果,具体规则可自己查。
("Amazing")的括号表示函数调用。
alert是一个函数对象,当它作为表达式的求值结果返回,当然可以被调用。

[1,2,3]这里的方括号是声明数组常量,紧跟[1]表示取数组元素。[1,2,3][1]意为取[1,2,3]这个数组里的第一个元素,即2(下标从0开始)

[1,2,3][1,2]=[1,2,3][(1,2)]=[1,2,3][2]=3

你可能感兴趣的:(JavaScript,圆括号,方括号)