Javascript 在脚本开头声明Jquery变量

Javascript 在脚本开头声明Jquery变量,javascript,jquery,variables,Javascript,Jquery,Variables,我想在脚本的开头声明几个变量。据我所知,全局变量只能在函数之外创建。下面是我正在使用的一段代码。当$map的声明仅在位置2时,代码按预期执行,但在位置1时,代码不起作用。除了不能对我的声明进行分组的缺点之外,我想知道这种差异的原因是什么,以及它会产生什么后果 var transMatrix = [1, 0, 0, 1, 0, 0]; var homeMatrix = [1, 0, 0, 1, 0, 0]; var $map = $('svg > g'); //1 $(document).r

我想在脚本的开头声明几个变量。据我所知,全局变量只能在函数之外创建。下面是我正在使用的一段代码。当$map的声明仅在位置2时,代码按预期执行,但在位置1时,代码不起作用。除了不能对我的声明进行分组的缺点之外,我想知道这种差异的原因是什么,以及它会产生什么后果

var transMatrix = [1, 0, 0, 1, 0, 0];
var homeMatrix = [1, 0, 0, 1, 0, 0];
var $map = $('svg > g'); //1
$(document).ready(function () {
    var $map = $('svg > g'); //2
    zoomSVG($map, 2);
});

1
中,您的方法的一个问题是,它是在dom就绪之前执行的,此时我们不确定引用的元素是否已加载,因此它可能不会返回任何元素,而这正是在dom就绪回调中添加jQuery代码的原因


因此,最安全的方法是在dom就绪处理程序中添加所有试图获取dom元素的变量

请定义在此上下文中“不工作”的含义。据我所知,您的代码中没有语法错误(只要已加载jQuery),您所有的代码都工作注意到您有两个不相关的
$map
变量(在
ready
处理程序中定义的on和一个全局变量)。+1。注意:“我们不确定引用的元素是否已加载”的唯一原因是OP没有指定此脚本的位置,否则它定义得很好,脚本将不会在HTML顺序中看到位于它后面的元素(或者显然是通过稍后运行的脚本创建的)。