Javascript 定义变量时出现奇怪的错误

Javascript 定义变量时出现奇怪的错误,javascript,jquery,Javascript,Jquery,这里有点不对劲, 要么我因为看不到明显的东西而愚蠢,要么定义变量的方式今天下午改变了 $(function() { console.log('something'); var marquee = $('#marquee'); var selected = $('#marquee ul li a img').first(); var link = $('#marquee ul li a'); var string = 'something else'; })

这里有点不对劲, 要么我因为看不到明显的东西而愚蠢,要么定义变量的方式今天下午改变了

$(function() {
    console.log('something');
    var marquee = $('#marquee');
    var selected = $('#marquee ul li a img').first();
    var link = $('#marquee ul li a');
    var string = 'something else';
});
当我来到控制台时,“something”没有被记录。 当我输入“marquee”时,jQuery对象被返回,一切正常。 但是,当我输入'selected','link','string'时,我得到了引用错误,变量未定义

我清除了缓存,更改了浏览器,删除了名称前的“var”,总是一样的。
有人知道发生了什么事吗?

我不能重现你的任何问题。我将您的javascript放入JSFIDLE中,它正是我所期望的:将“某物”记录到控制台,并且我无法访问任何超出范围的变量

问题 问题是代码永远不会执行。您认为marquee变量是创建的,但它不是,因为在控制台中,
marquee
这样的输入值将打印一个id设置为输入值的元素。因此,如果在控制台中键入
my_div
,并且没有设置my_div变量,它将返回一个id为“my_div”的元素。(如果你不相信我,你可以自己测试一下)。这意味着永远不会设置
选框
变量

解决方案 以下解决方案之一可能有效,也可能无效

解决方案1 将代码放入
$(document).ready(function(){})中而不是内部
$(函数(){})

注意:(这可能只是您正在使用的jQuery版本上的一个bug

解决方案2
将脚本添加到
body
标记中的所有html下,而不是添加到
head
标记中。

ready
函数之外,这些变量都不可用,仅供将来使用cash=cacheYes,但是为什么我可以访问marquee变量,而什么“something”没有记录?在jsfiddle.net中创建一个复制p的演示问题。你不能从控制台访问
marquee
,因为它是写的。你什么时候启动该功能?我也尝试了类似于jsbin.com的东西…那里,一切都很快…但在我的计算机上,即使我更改浏览器,我也可以访问marquee变量,而且有些东西没有记录。我的整个计算机会有问题吗?什么这是你的HTML?你还有其他代码没有给我们看吗?你是怎么运行的?一个“你整个电脑的问题”似乎是一个不太可能的原因。请尝试添加有关您正在做的事情的更多信息/上下文,直到您能够演示其他人可以重现的问题。我知道这不太可能,但我没有其他想法。我的选择器很好,因为当我运行$(“#marquee ul li a”)时;在控制台中,返回jquery对象。其他代码只是jquery和Modernizer。然后尝试将您的问题剥离到最底层,并添加一些内容,直到问题返回。尝试创建一个包含对jquery的引用的最小html页面,并使用该代码创建一个脚本标记,看看您是否仍然获得意外行为。您是否在运行web服务器?或者您只是从@user3829754路径本地加载文件?是的,现在我知道了,代码从未执行过。我不知道在控制台中键入元素id,所以我确定代码是执行过的。所以,现在我重新创建了所有内容,不确定问题出在哪里,但现在它可以工作了。非常感谢
$(function() {
    console.log('something');
    var marquee = $('#marquee');
    var selected = $('#marquee ul li a img').first();
    var link = $('#marquee ul li a');
    var string = 'something else';
});