我可以在dart的主函数之外使用queryselector吗



在许多示例中,我看到的代码如下:

InputElement task;
void main() {
  task = querySelector('#task');
  task.text = "blabla";
}

这样做似乎也有同样的效果。

InputElement task = querySelector('#task');
void main() {
  task.text = "blabla";
}

我更喜欢第二种方式,但我不确定是否有什么不同,或者第二种方法可能会破坏一些东西。

是的,您可以在顶层调用querySelector。

但是,请注意求值顺序,因为必须首先初始化DOM。通常,dart脚本标记被放置在主体的末尾,因此main在创建DOM之后运行。

对于顶级变量,第一次使用该变量时会计算右侧的表达式。

考虑以下示例,该示例打印1、2、3。

int i = foo();
foo() {
  print('#2');
  return 42;
}
main() {
 print('#1');
 int k = i;  // i is accessed for the first time, so foo() is called.
 print('#3');
}

由于在DOM准备好之前不会执行Dart代码,所以这两种方法都可以很好地工作,而且都不会中断。

最新更新