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中的物件,方括號和演算法JavaScript物件演算法
- 萬用字元 and [] 中括號的用法字元
- JavaScript 函式呼叫時帶括號和不帶括號的區別JavaScript函式
- JSON 字串中的中括號和大括號區別詳解JSON字串
- Matlab中的括號()[]{}Matlab
- 正則中括號點符號符號
- 談談方括號萬用字元字元
- Unix各種括號的用法總結
- JS物件的方括號表示法和點表示法JS物件
- JavaScript取出字串中括號裡的內容JavaScript字串
- Linux Shell中各種括號用法總結!Linux
- 每日一題: 有效括號每日一題
- 括號畫家
- 【棧】括號匹配
- c++物件建立帶括號與無括號的區別C++物件
- js中大括號{}的用法簡單介紹JS
- javascript 判斷括號是否配對。JavaScript
- JavaScript 小括號()分組運算子JavaScript
- JavaScript函式多個小括號連續呼叫JavaScript函式
- 20. 有效的括號
- Shell 括號總結
- Swift之花括號Swift
- 最長有效括號
- 【題解】括號序列
- js正規表示式獲取字串中多個大括號{}中的內容,包括大括號並放入陣列中JS字串陣列
- JavaScript 解構賦值小括號的應用JavaScript賦值
- [leetcode]有效的括號LeetCode
- [PHP字串]②--花括號{}的作用PHP字串
- leecode856.括號中的分數
- 正規表示式中括號[]字元類字元
- 正規表示式 中括號[] 字元類字元
- 物件點查詢和中括號查詢的區別物件
- 在word文件中全部的文字出現了灰色背景,而且有中括號括起。
- python的學習(三)----中括號的使用Python
- SQL中多條件查詢括號的用途SQL
- ACM 括號配對問題ACM
- 22. 括號生成-c++C++