gpt4 book ai didi

javascript - 为什么这个实例是 javascript 函数已知的

转载 作者:行者123 更新时间:2023-11-30 13:05:20 25 4
gpt4 key购买 nike

addChangedValue 函数中的 sampleViewModel 实例怎么可能不是 undefined 或 null 呢?

从实例化的范围来看,据我所知,在 addChangedValue 函数中不应知道 sampleViewModel。

$(function(){

var PersonViewModel = function() {
var me = this;
me.firstName = ko.observable('Lisa'),
me.lastName = ko.observable('T'),
me.changes = ko.observableArray()
};

var sampleViewModel = new PersonViewModel();

sampleViewModel.firstName.subscribe(function(newValue) {
addChangedValue("firstname refreshed: " + newValue);
});

function addChangedValue(updatedValue) {
sampleViewModel.changes.push({ value: updatedValue });
};

ko.applyBindings(sampleViewModel, document.getElementById('data'));
});

最佳答案

肯定会。闭包在词法上绑定(bind)到定义它们的范围,因此在该范围内定义的任何内容(闭包也定义在该范围内)将为该闭包所知。

此外,addChangedValue 将有权访问其封闭范围内的任何变量,除非您通过在该函数内定义一个类似名称的变量来隐藏它。

关于javascript - 为什么这个实例是 javascript 函数已知的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15884360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com