jQuery $(this).position().顶部无法在Chrome中运行

Tra*_*tto 4 javascript jquery google-chrome

我想知道是否有任何理由这段代码不起作用......

top = $(this).find('ul').position().top;
Run Code Online (Sandbox Code Playgroud)

它可以在IE,Firefox和Safari中运行,但是当我在Chrome中提示输出时它会显示DOM窗口对象...我需要一个整数.为什么它会警告DOM窗口对象?

T.J*_*der 12

你确定你真的提醒 top?回想一下,这top是浏览器托管的JavaScript中的预先存在的全局变量(它是window.top顶级窗口).

更新:有趣的是,Chrome不会让你隐式覆盖top(这可能是一件好事):演示.只需要声明的任何函数的代码是在您的变量(反正总是一个好主意)(代码,这将在功能,对吧?)的影子吧,等,将工作:演示.例如:

var top = $(this).find('ul').position().top;
Run Code Online (Sandbox Code Playgroud)

声明变量非常重要,以避免成为隐含全局恐怖的牺牲品.正如你在这种情况下发现的那样,避免全局变量总是最好的,因为top如果你声明它(再次保护window.top),Chrome甚至不会让你用作全局变量.

  • @Travis :(不需要道歉.)不用担心,很高兴有帮助.但是,不要只改变变量名,*声明*变量.如果你不这样做,你就会成为[恐怖全球恐怖]的牺牲品(http://blog.niftysnippets.org/2008/03/horror-of-implicit-globals.html).你真的不想那样做.:-)另外,请注意JavaScript只在语法上类似于C++和Java**.这是非常非常不同的(甚至`这个'意味着完全不同的东西). (2认同)