То, как ваш вопрос сформулирован, я думаю, что "да" будет правильным ответом.
Это работает точно так, как вы описали: Когда любая переменная в реактивном блоке изменяется, тогда блок исполняется.
Это правило. Просто. Предсказуемость. Посмотрите, как вы интуитивно все это интуитивно понимаете?
Это больше (или даже меньше) волхвов c, чем когда значение ваших переменных автоматически отражается в вашем представлении. Svelte уже знает обо всех переменных (верхнего уровня) в вашем коде для этого.
Независимо от того, «генерирует» ли реативный блок значение или нет (реактивное объявление против оператор ) не имеет значения. Это просто «все переменные».
Если вы хотите исключить переменную из наблюдаемого, то извлеките обработку, которая ее использует, из реактивного блока:
// runs when `name` or `age` change
$: if (name === "city") {
console.log("RUNNING HERE 01", age);
} else {
console.log("RUNNING HERE 02", age);
}
const logAge = msg => console.log(msg, age)
// only runs when `name` changes
$: if (name === "city") {
logAge("RUNNING HERE 01");
} else {
logAge("RUNNING HERE 02");
}