Dart 编程中的词法作用域


Dart 是一种词法作用域语言。词法作用域意味着随着我们向下移动到最新变量声明,变量值将取决于变量存在的内部作用域。

示例

考虑以下所示示例 −

 在线演示

void main(){
   var language = 'Dart';
   void printLanguage(){
      language = 'DartLang';
      print("Language is ${language}");
   }
   printLanguage();
}

在以上示例中,我们在 printLanguage() 函数的作用域内更改了 language 变量的值,由于我们在 printLanguage() 函数内打印值,内部作用域是同一代码块内的作用域,因此我们将获得 language = 'DartLang' 的值,而不是 language = 'Dart'。

输出

Language is DartLang

示例

让我们考虑另一个示例,复杂一些,以便更好地理解词法作用域。

考虑以下所示示例 −

 在线演示

void main() {
   String language = "Dart";
   void outerFunction() {
      String level = 'one';
      String ex = "scope";
      void innerFunction() {
         Map level = {'count': "Two"};
         print('ex: $ex, level: $level');
         print('Language: $language');
      }
      innerFunction();
      print('ex: $ex, level: $level');
   }
   outerFunction();
}

以上示例有多个作用域,例如,我们在开始 main 函数后就有一个作用域,然后,在输入 outerFunction() 后,另一个内部作用域打开,当我们移动到 innerFunction() 的内部时,一个更大的作用域打开。

输出

ex: scope, level: {count: Two}
Language: Dart
ex: scope, level: one

更新于:2021-05-21

1K+ 浏览

开启你的 职业生涯

完成课程获得认证

开始
广告