文件之间的Javascript var

Posted

技术标签:

【中文标题】文件之间的Javascript var【英文标题】:Javascript var between files 【发布时间】:2016-04-07 11:32:52 【问题描述】:

我在将变量导入到从回调运行的 js 函数中时遇到问题:

<script type="text/javascript" src="/javascripts/maps.js"> </script>

  <script async defer
          src="https://maps.googleapis.com/maps/api/js?key=<%= mapkey%>
        &libraries=visualization&callback=initMap">
  </script>

问题是我不能在 initMap 中使用全局变量或外部函数。我正在使用 nodejs。

function initMap() 
    var map = new google.maps.Map(document.getElementById('map'), 
        zoom: 8,
        center: lat: -34.397, lng: 150.644
    );
    var geocoder = new google.maps.Geocoder();

    document.getElementById('submit').addEventListener('click', function() 
        geocodeAddress(geocoder, map);
    );


function geocodeAddress(geocoder, resultsMap) 
    var address = document.getElementById('address').value;
    geocoder.geocode('address': address, function(results, status) 
        if (status === google.maps.GeocoderStatus.OK) 
            resultsMap.setCenter(results[0].geometry.location);
            var marker = new google.maps.Marker(
                map: resultsMap,
                position: results[0].geometry.location
            );
         else 
            alert('Geocode was not successful for the following reason: ' + status);
        
    );

由于地址取自html表单或可以显式定义:

var address = document.getElementById('address').value; or
var address = ["place", "place"]

但是我需要能够使用全局变量或导出函数:

var address = global_locations (defined elsewhere as a global.gobal_locations = ["place", "place"] and works in other files) or
var address = loc.getAddresses();

我对异步的理解不足以做到这一点

【问题讨论】:

您是否尝试从locations.js 中读取值?也许你应该对文件做一个 ajax 请求? 您可以尝试将数组存储在 localstorage 中,然后在您的其他文件中再次读取它 【参考方案1】:

您可以使用 window 并为要全局访问的变量创建命名空间。

请在Storing a variable in the JavaScript 'window' object is a proper way to use that object? 中查看来自 Blazemonger 的答案。

我想这会帮助你去你想去的地方。

您可以添加动态脚本加载功能,如下所示:

function loadjs(filename)
    var jsfile=document.createElement('script')
    ref.setAttribute("type","text/javascript")
    ref.setAttribute("src", filename)

loadjs("myscript.js")

【讨论】:

以上是关于文件之间的Javascript var的主要内容,如果未能解决你的问题,请参考以下文章

javascript 文件大小函数故障,字节在 1000 到 1024 之间

Knockout js - 如何在两个 javascript 文件之间传递值

jQuery的文件引入入口函数以及js对象和jquery对象之间的互相转换

使用 Javascript 处理 HTML 和 Swift 之间的交互

node.js笔记——文件之间的引入

用于 WebGL 的 C++ 和 Javascript 之间的通信