Javascript:onload函数中声明的变量连接到哪里?

Javascript:onload函数中声明的变量连接到哪里?,javascript,knockout.js,Javascript,Knockout.js,在运行函数的代码中,document.ready: $(function() { var vm = new ViewModel(); ko.applyBindings(vm); }); 在层次结构中的窗口下的哪里可以找到变量vm?哪里都找不到:您在函数中声明了(使用了var)它,因此它是一个局部范围的变量 如果希望它在窗口下可用,则使用window.vm而不是var-vm无处可用:您在函数中声明(使用了var)它,因此它是一个局部范围的变量 如果您希望它在窗口下可用,请使用wi

在运行函数的代码中,document.ready:

$(function() {
    var vm = new ViewModel();
    ko.applyBindings(vm);
});
在层次结构中的窗口下的哪里可以找到变量vm

哪里都找不到:您在函数中声明了(使用了
var
)它,因此它是一个局部范围的变量

如果希望它在
窗口下可用,则使用
window.vm
而不是
var-vm

无处可用:您在函数中声明(使用了
var
)它,因此它是一个局部范围的变量


如果您希望它在
窗口下可用,请使用
window.vm
而不是
var-vm
tl;dr:您无法从
窗口访问它,除非您将它放在那里

在函数内声明变量时,它是作用于函数的局部变量,而不是全局变量,因此在
窗口中不可用。您需要将变量设置为
window
的属性

示例:

$(function() {
    var vm = new ViewModel();
    ko.applyBindings(vm);
    window.vm = vm;
});

tl;dr:您无法从
窗口访问它,除非您将它放在那里

在函数内声明变量时,它是作用于函数的局部变量,而不是全局变量,因此在
窗口中不可用。您需要将变量设置为
window
的属性

示例:

$(function() {
    var vm = new ViewModel();
    ko.applyBindings(vm);
    window.vm = vm;
});

根据定义,变量
vm
窗口
对象中不可用。这是因为,在Javascript中,一个新函数(正如您所做的)创建了一个新的作用域。基本上,您的
vm
变量是一个私有变量

如果您想使此功能可用,您有两个选项(基本相同,但看起来有点不同):

1-您可以在函数外部声明变量

var vm;
$(function() {
    vm = new ViewModel();
    ko.applyBindings(vm);
});
2-可以将其附加到窗口对象

$(function() {
  window.vm = new ViewModel();
  ko.applyBindings(vm); // vm refers to the vm variable in your window object
});

最好不要以上述任何方式将变量附加到窗口对象。你可能想找到另一种方法去做你想做的事情。一种可能是在document.ready(您正在执行的操作)中执行所有代码,或者使用回调函数。

根据定义,变量
vm
窗口中不可用。这是因为,在Javascript中,一个新函数(正如您所做的)创建了一个新的作用域。基本上,您的
vm
变量是一个私有变量

如果您想使此功能可用,您有两个选项(基本相同,但看起来有点不同):

1-您可以在函数外部声明变量

var vm;
$(function() {
    vm = new ViewModel();
    ko.applyBindings(vm);
});
2-可以将其附加到窗口对象

$(function() {
  window.vm = new ViewModel();
  ko.applyBindings(vm); // vm refers to the vm variable in your window object
});

最好不要以上述任何方式将变量附加到窗口对象。你可能想找到另一种方法去做你想做的事情。一种可能是在document.ready(您正在执行的操作)中执行所有代码或使用回调函数。

顺便说一句,您的回调不是激发的
onload
,而是开启的。将其声明为全局变量,然后它将作为全局对象(浏览器中的窗口)的属性提供。顺便说一句,您的回调不是激发的
onload
,而是启用的。将其声明为全局变量,然后它将作为全局对象(浏览器中的窗口)的属性可用。感谢您的简单解释。感谢您的简单解释。