https://svelte.dev/repl/f8db4771ba794c658d7c25a6e72d1b46?version=3.18.1中的代码
有两个“反应变量”:
$: nameUpperCase = name.toUpperCase();
$: if (name === "city") {
console.log("RUNNING HERE 01", age);
} else {
console.log("RUNNING HERE 02", age);
}
如果值发生name变化,那么nameUpperCase也会发生变化。这很容易。
但是对于第二部分,似乎当nameor的值发生变化时,就会评估age该行。if如果从age中删除console.log(),如https://svelte.dev/repl/68c2cdea2bfd462caa5ac5519fb8b99d?version=3.18.1,那么是否age更改都没关系。该if行不被评估。
但是age从不参与为if语句生成任何最终值。它只是被打印出来,并且console.log总是返回undefined。那么规则是什么?不知何故,Svelte“神奇地”收集 之后的所有变量$:,然后如果它们中的任何一个发生变化,则执行$:?之后的行 所以即使变量不参与形成一些最终值,它仍然被考虑吗?