Sai*_*udo 2 javascript jquery scope
可能重复:
JavaScript:var functionName = function(){} vs function functionName(){}
我有一些Javascript主要工作,除了这个功能,我可以从一些区域调用,但不能从其他区域调用.这似乎是一个范围问题,但我不知道为什么.
$().ready(function () {
UpdateElfDisplay(); // <--- Undefined
$('#Attribute1').change(function () {
UpdateElfDisplay(); // <--- Works just fine.
});
var UpdateElfDisplay = function () {
// ... some work done here
};
});
Run Code Online (Sandbox Code Playgroud)
正如我在上面标记的那样,当我从.change()函数调用它时,UpdateElfDisplay函数工作正常,但如果我在加载文档时尝试调用它,则会得到"未定义".有人可以解释原因,或者指导我描述这个的资源.
您在定义之前调用该函数,因此它不起作用.稍后调用处理程序中的那个,因此它可以工作
如果您使用函数声明,它将被"提升"并且将起作用.
function UpdateElfDisplay () {
// ... some work done here
}
Run Code Online (Sandbox Code Playgroud)
JavaScript解释器在计算任何表达式之前评估函数的声明形式.
边注
它之所以是一个类型错误,而不是一个的ReferenceError是,var UpdateElfDisplay实际上是悬挂类似于函数声明,但分配本身并没有悬挂.
这意味着变量存在,但它还没有您指定的值.
旁注2
您的处理程序可能会被重写为:
$('#Attribute1').change(UpdateElfDisplay);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |