未定义的变量,即使是全局定义的
Variable not defined even being globally defined
所以我有这个函数,我在全局声明var togglessmall,我得到"Uncaught ReferenceError: togglessmall未定义"
$(document).ready(function(){
if ( !$('.sound,.sound-small').hasClass('clickd') || $('.sound').hasClass('gone') ){
$('body').on('mouseleave', function(){
togglesmall = setTimeout(function(){$('.sound-small').fadeOut()}, 2000);
});
$('body').on('mouseenter', function(){
clearTimeout(togglesmall);
$('.sound-small').fadeIn(500);
});
};
$('.sound').on('click', function(){
$('.sound').fadeOut(1000);
$('.sound').addClass('clickd');
});
});
这不是我第一次收到,但我从来不知道为什么会这样。
我正在学习js,所以我是个新手。整个代码是我写的,所以如果你有任何建议,我很感激。
你应该像这样在顶部声明togglesmall:
var togglesmall = null;
要全局定义变量,需要在文档准备好时创建它。所以它必须是这样的
$(document).ready(function(){
var togglesmall;
........
// continue your code below
});
您将获得ReferenceError
,因为
togglesmall = setTimeout(...)
执行全局赋值,在代码运行后只创建变量。
执行如下操作:
if (typeof togglesmall != 'undefined')
clearTimeout(togglesmall)
将修复您的ReferenceError
。
或者像David W Lee推荐的那样:
$(document).ready(function(){
var togglesmall; // add this; defines the variable and initializes to undefined
有趣的事实:做全局赋值,就像你对
做的那样previousUndeclaredName = value;
而不首先遇到像
这样的东西var previousUndeclaredName;
或在参数列表
中function doSomething(previousUndeclaredName) {
将在严格模式下始终为ReferenceError
。[1]
[1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var描述
您需要在文档准备好时创建它。像下面…
$(document).ready(function(){
var togglesmall;
//yourode
});
相关文章:
- javascript无法重新定义函数内部的全局对象
- Node.js错误“;ReferenceError:全局未定义“;在从0.10.2更新到0.12.2之后
- Babel/Mocha:Mocha已全局安装,但未定义describe()
- 得到"全局未定义“;全局变量定义清楚时出错
- 用自定义javascript全局命名空间替换窗口
- Javascript 中未定义的全局变量
- 如何在单独的文件中使用自定义Vtype,以便在EXT.JS中全局使用它们
- Ember.js-定义一个全局函数,该函数可以向操作返回值
- 在全局作用域中定义的具有相同名称的变量
- 由“var”全局定义的变量是什么范围
- 从全局定义的函数访问函数范围链
- 找不到全局定义的变量
- clearTimeout似乎没有清除全局定义的计时器ID
- 控制器不是一个函数,在全局定义控制器时未定义
- 当全局定义时,自定义过滤器不起作用
- 全局定义的变量在JQuery中找不到
- 在Chrome 13中全局定义的位置
- 未定义的变量,即使是全局定义的
- 在jQuery中全局定义一个函数
- 为什么全局定义的变量是未定义的