var n = {
Android: /Android/i.test(navigator.userAgent),
Safari: /iPhone|iPad|iPod/i.test(navigator.userAgent) && !/CriOS|Chrome|Mercury/.test(navigator.userAgent)
};
我对/Android/i.test()函数感到好奇。如果这个函数在另一个文件中?我猜它不是因为下一个函数/iPhone|iPad|iPod/i.test()更加好奇。这是' Android'上的字符串比较串?任何人都可以提供一些文件吗?
答案 0 :(得分:15)
这是对正则表达式/Android/i
的方法调用。
/Android/i
部分代表regular expression或“正则表达式”,用于对字符串进行模式匹配。
正则表达式有一个名为test
的方法,如果匹配则返回true
。您可以将上面的hunk重写为:
androidRegex = /Android/i;
safariRegex = /iPhone|iPad|iPod/i;
criOsregex = /CriOS|Chrome|Mercury/;
var n = {
Android: androidRegex.test(navigator.userAgent),
Safari: safariRegex.test(navigator.userAgent) && !criOsregex.test(navigator.userAgent)
};
在Javascript中声明正则表达式的语法是/pattern/flags
,其中pattern
是要比较的模式,flags
是其他选项。
Android的一个非常简单:它只是与字符串Android
进行比较,并使用标记i
使其不区分大小写。
Safari一个稍微复杂一些,因为它使用“更改”来匹配iPhone
,iPad
或iPod
。 |
字符分隔符在正则表达式中交替显示。
CriOS正则表达式,特别是,留下i
标志,因为作者希望它区分大小写(默认值)。
答案 1 :(得分:0)
var n
被声明为two properties
的对象,称为Android
和Safari
。
当对象为initialized
时,会执行两个属性,返回boolean
结果,User Agent
的{{1}}为 Android 第一个,或第二个 iPhone , iPad 或 iPod 。
因此,您可以预期Navigator
为properties
或true
。
编辑:正如@ N3dst4所述,这称为正则表达式。有关它的更多信息,请参阅他的回复。