0

我对苗条还很陌生,一周前就开始了……

我想知道我真的很喜欢它❤️❤️但我有问题☹️☹️

我正在尝试访问脚本标签中的 $: 变量,但出现错误Cannot access 'greeting' before initialization

<script>
    let name = 'world';
    $: greeting = `Hello ${name}`
    console.log(greeting)
</script>

<h1>Hello {name}!</h1>

我还尝试在使用它之前用let声明变量

    let greeting

但在这种情况下console.log输出undefined.

4

1 回答 1

4

您的问题的解决方案是使console.log(greeting)语句也具有反应性:

<script>
    let name = 'world';
    $: greeting = `Hello ${name}`
    $: console.log(greeting)
</script>

<h1>Hello {name}!</h1>

因为console.log在您的示例中不是反应性语句,所以它实际上是在任何反应性语句之前执行的,遵循脚本的“正常”流程执行。因此,执行时greeting尚未设置(您的第一个错误)或已undefined通过let greeting声明设置为(您的第二个错误)。

通过进行console.log反应,您可以确保(a) greeting设置后执行(解决您的第一个问题),并且(b)每次 greeting设置(解决您的第二个问题)。而且您不必greeting在反应式语句中为其赋值之前进行声明。

于 2020-06-17T07:45:41.480 回答