我有一个应用程序,其中有一个脚本标记,可以在Google地图javascript库中提取。
<script src="https://maps.googleapis.com/maps/api/js?
v=3.exp&libraries=geometry&client=MY_CLIENT"></script>
我试图拉出脚本标签,因为我不再需要它,并且在旧版本的chrome(chrome 30)上运行时,注意到非地图相关代码中的奇怪行为。
我的代码是检查es6符号是否用作对象上的键
//mySymbol = Sybmol('whatever');
//...
if(mySymbol in obj){ //always returns true in old browsers without google maps loaded
//do something
}
在我删除google地图脚本标记之前,这是正常运行的。但是,在我删除脚本后,in运算符开始为每个符号返回true(即使它没有在对象上使用)。我能够通过将脚本标记添加回我的index.html并刷新页面来始终如一地切换行为。
var foo = Symbol('foo')
var obj = {}
foo in obj //true if google maps is not loaded. false otherwise
此行为与here和here所述的polyfill限制一致。但令我困惑的是为什么我在谷歌地图的文档中找不到这个polyfill的任何文档,以及为什么他们能够绕过polyfill限制。这是谷歌地图的js代码的已知特征/行为吗?