【问题标题】:Map() is not defined in Google ChromeGoogle Chrome 中未定义 Map()
【发布时间】:2013-06-19 12:48:34
【问题描述】:

我一直在寻找答案,但我只得到有关 Google 地图 API 的结果。我正在尝试使用 JavaScript 中的映射将整数映射到字符串。在 Firefox 中一切正常,但在 chrome 中我在控制台中收到一条错误消息:

Uncaught ReferenceError: Map is not defined

下面是一段参考代码:

var NameMap;
var DistanceMap;

function FillMaps(){
    NameMap = new Map();
    DistanceMap = new Map();

    NameMap.set(01, "Araba/Álava");
}

function CheckName(_field){
    var value = document.getElementsByName(_field.name).item(0).value;
    var location = value.charAt(0) + value.charAt(1);
    var result = NameMap.get(parseInt(location));
    if(result == undefined){
        result = "Unknown";
    }
    document.getElementById('loc').innerHTML = result;
}

【问题讨论】:

    标签: javascript google-chrome map ecmascript-harmony


    【解决方案1】:

    2011 年底,Chrome 中已经存在一些 ES 和谐功能,包括 Map()。它只是默认禁用。

    要启用该功能,请访问chrome://flags/,并启用“启用实验性 JavaScript”。然后重新启动浏览器并享受新功能。

    另一种方法是在命令行上传递--js-flags=--harmony 标志。例如:

    chromium --js-flags=--harmony
    chrome.exe --jsflags=--harmony
    

    【讨论】:

      【解决方案2】:

      地图现在处于 Chrome 版本 38(截至 2014 年 8 月 29 日的测试版),这意味着它很快就会稳定下来。如果您有 38 个,则无需启用实验性功能。

      【讨论】:

        【解决方案3】:

        为什么不使用简单的数组?

        var NameMap;
        var DistanceMap;
        
        function FillMaps(){
            NameMap = new Array();
            DistanceMap = new Array();
        
            NameMap[01]="Araba/Álava";
        
        }
        
        function CheckName(_field){
            var value = document.getElementsByName(_field.name).item(0).value;
            var location = value.charAt(0) + value.charAt(1);
            var result = NameMap[parseInt(location)];
            if(result == undefined){
                result = "Unknown";
            }
            document.getElementById('loc').innerHTML = result;
        }
        

        【讨论】:

        • 没错,我可以在我的示例中使用数组!但是我将来可能需要将一个字符串映射到一个字符串,有什么想法可以在 chrome 中修复它吗?
        • 可以使用一个对象。数组也可以这样做,但这是不好的做法(请参阅andrewdupont.net/2006/05/18/…)。地图没有出现在javascript reference中,我认为它是由firefox添加的,尽管它甚至没有出现在mozilla参考中。
        【解决方案4】:

        “危险!实验技术!”

        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

        这里的代码可能可以实现 Chrome 的 Map,但我没有尝试过:

        http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets

        【讨论】:

          猜你喜欢
          • 2018-02-28
          • 2023-03-30
          • 2013-06-15
          • 2020-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-23
          • 2017-03-04
          相关资源
          最近更新 更多