Dart 编程中的词法范围

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

示例

考虑下面显示的例子 -

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

在上面的例子中,我们改变了printLanguage()函数作用域内的语言变量的值,因为我们是在函数内部打印值,最里面的作用域是同一个代码块内的,因此我们将得到语言 = 'DartLang' 而不是语言 = ' Dart '。 printLanguage() 

输出结果

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();
}

有在上面的例子中的多个领域,例如,我们有一个范围,一旦我们开始的主要功能,在这之后,另一个内部范围内打开,一旦我们进入outerFunction()和更范围,因为我们内部的移动innerFunction()。

输出结果

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