使用动态范围时,第一个输出显然是10。
我对第二次输出感到好奇。你好吗或30.5为什么?
void main() {
f1();
f2();
}
void f1() {
int x = 10;
g();
}
void f2() {
String x = "hello";
f3();
g();
}
void f3() {
double x = 30.5;
}
void g() {
print(x)
}
答案 0 :(得分:-1)
动态作用域意味着x指的是在调用堆栈的最近一帧中声明的x有一个。
所以因为g()之前的最近一次调用是f3()所以答案是30.5而不是你好。