_white_list = { 'douban.com': 1, 'douban.fm': 1, 'google.com': 1, 'google-analytics.com': 1, 'googleadservices.com': 1 },
_RE_DOMAIN = /(.+?)\.([^\/]+).+/;
if (_white_list[(_RE_DOMAIN.exec(s) || [])[2]])这个语句是什么意思
_RE_DOMAIN = /(.+?)\.([^\/]+).+/;
if (_white_list[(_RE_DOMAIN.exec(s) || [])[2]])这个语句是什么意思
这个先拆开看(_RE_DOMAIN.exec(s) || [])[2]_RE_DOMAIN.exec(s)这个是利用/(.+?)\.([^\/]+).+/去匹配变量 s 中的值如果匹配成功则(_RE_DOMAIN.exec(s) || [])[2] 得到 匹配成功的值的第二个索引中的值
如果匹配失败 则取 [] 中的第二个值 ( 实际上是取不到的)
if (_white_list[(_RE_DOMAIN.exec(s) || [])[2]]) 的意思就是匹配变量 s 中 是否含有_white_list的key值 也就是看变量s中是否有douban.com或者douban.fm如果有则if判断成功如果没有则判断失败
现在的正则匹配:
(_RE_DOMAIN.exec(s) || [])[2]
“www.douban.com” ===> douban.co
"www.abcd.douban.fm" ===> abcd.douban.f
我想这种结果楼主也不想得到