gpt4 book ai didi

dart - DartPad,执行顺序,及时吗?

转载 作者:行者123 更新时间:2023-12-03 04:15:45 24 4
gpt4 key购买 nike

我是Dart的新手(来自JS),并且试图理解这个简单的程序。

当声明变量并在程序顶部进行设置时,似乎在执行main()之前未发生(???)赋值。见下文。

List<int> a1=[1,2,3];
List<int> b1=new List.from(a1);


void main() {
a1.add(9);
print(a1); // [1,2,3,9]
print('b1 $b1'); // CONFUSING [1,2,3,9] (I expected [1,2,3])


List<int> a2=[1,2,3];
List<int> b2=new List.from(a2);
a2.add(77);

print(a2); // [1,2,3,77]
print('b2 $b2'); // [1,2,3], as expected
}

这是因为执行了一些准时(JIT)代码吗?或者,分配工作会在以后发生,例如一些JS陷阱。我确实尝试阅读有关此文档,但无法确定任何代码执行顺序。

我对学习自己的学习方式最感兴趣。因此,任何指向文档适当部分的链接都将受到赞赏。

PS。在JS中,Chrome开发者工具为调试器提供了带有断点的便捷调试器,我通常使用它来检查执行顺序错误。

提前致谢。

最佳答案

这不是JIT,只是全局变量的延迟初始化。

Dart确保在main开始之前没有用户代码运行。为了确保这一点,它在第一次读取全局变量和静态变量时会延迟进行初始化。这确实意味着,当全局变量初始化器引用可变对象时,应格外小心。

关于dart - DartPad,执行顺序,及时吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58688116/

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