我正在使用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变量在本地范围内使用。

08-08 07:04