我正在使用javascript检测操作系统版本。我对Java有一定的了解,但有些JavaScript语法却像下面这样令人困惑:
var os = (function() {
var ua = navigator.userAgent.toLowerCase();
return {
isWin2K: /windows nt 5.0/.test(ua),
isXP: /windows nt 5.1/.test(ua),
isVista: /windows nt 6.0/.test(ua),
isWin7: /windows nt 6.1/.test(ua)
};
}());
我不确定为什么在return语句中有冒号,以及它们到底在做什么。
另外//和它之间的文字的目的是什么?
它返回布尔值吗?或字符串?
还有,为什么
}());
到底?
我只想输入
}
代替
感谢您抽出宝贵的时间阅读。我知道这段代码对我有用,但是我想学习为什么。
谢谢。
最佳答案
我不确定为什么在返回语句中有冒号:
return语句的右侧是an object literal。冒号将属性名称(左侧)与值(右侧)分开。
另外//和它之间的文字的目的是什么?
这些是regular expression literals。
它返回布尔值吗?或字符串?
两者都不返回对象。
另外,为什么我们有}()
这是立即调用的函数。 os
是函数的返回值,而不是函数本身。
在此示例中,它允许ua
变量在本地范围内使用。