var vs dynamic in Dart
Nitish Kumar Singh

Nitish Kumar Singh @nitishk72

About: Part-time freelancer, full-time programmer. To know more you can visit my website https://nstack.in/

Location:
India
Joined:
Aug 24, 2018

var vs dynamic in Dart

Publish Date: Feb 21 '19
13 6

In Dart and JavaScript we have var keyword for the variable declaration but both are not same.

There is the dynamic keyword for variable declaration in Dart which is equivalent to JavaScript var keyword.

Dart var keyword is very much similar to javascript var keyword but not the exact same. Most of Dart developer uses Dart var as JS var which is not correct. Let's understand this by some examples.

I will give 4 different examples.

Example 1

In JavaScript and Dart, we can store any kind of data in a variable which has been defined using var keyword.

Dart

// This is valid Example this will work
void main() {
     var x = 'Maths pi';
     var y = 3.14;

     print(x); // Maths pi
     print(y); // 3.14
}
Enter fullscreen mode Exit fullscreen mode

JavaScript

// This is valid Example this will work
 var x = 'Maths pi';
 var y = 3.14;

 console.log(x); // Maths pi
 console.log(y); // 3.14
Enter fullscreen mode Exit fullscreen mode

Example 2

In JavaScript and Dart, we can store different kind of data in the same variable.

Dart

// This is valid Example this will work
void main() {
    var x ;
    x = 'Math pi';
    print(x); // Maths pi

    x = 3.14;
    print(x); // 3.14
}
Enter fullscreen mode Exit fullscreen mode

JavaScript

// This is valid Example this will work
 var x ;
 x = 'Math pi';
 console.log(x); // Maths pi

 x = 3.14;
 console.log(x); // 3.14
Enter fullscreen mode Exit fullscreen mode

Example 3

Now I am going to mix Example 1 and Example 2
Now I am going to initialize the variable and trying to store different data type in the same variable. This is going to give me some error because this is not valid in Dart but its valid in JavaScript.

This is the place where var behaves differently in Dart

Dart

// This is invalid Example this will work
void main() {

     var x = 'Math pi';
     print(x);  // Maths pi


     x = 3.14;  // Compilation failed error because
                // you are trying to assign double to String variable.
     print(x);
}
Enter fullscreen mode Exit fullscreen mode

JavaScript

// This is valid Example this will work
 var x ;
 x = 'Math pi';
 console.log(x); // Maths pi
 x = 3.14;
 console.log(x); // 3.14
Enter fullscreen mode Exit fullscreen mode

Example 4

If we had used dynamic instead of var in Dart code we haven't got error because dart dynamic is same as JavaScript var.

Dart

// This is invalid Example this will not work
void main() {
     var x = 'Math pi';
     print(x); // Maths pi
     x = 3.14; 
     print(x); // expected 3.14
}
Enter fullscreen mode Exit fullscreen mode

JavaScript

// This is valid Example this will work
 var x ;
 x = 'Math pi';
 console.log(x); // Maths pi
 x = 3.14;
 console.log(x); // 3.14
Enter fullscreen mode Exit fullscreen mode

This is my first post here. If you like it let me so that I can be motivated to post here

Comments 6 total

  • Kaelan Mikowicz
    Kaelan MikowiczFeb 22, 2019

    Cool, so var can be either dynamic or another type depending on how it is initialized.

  • Sung M. Kim
    Sung M. KimFeb 22, 2019

    Thanks for the post, Nitish 👍

    I've never used Dart and the post was very easy to follow.
    How I understood about var in Dart is that, Dart keeps track of initial variable type while dynamic.

    And shouldn't the example 4 use dynamic keyword?

    // This is invalid Example this will work
    void main() {
         dynamic x = 'Math pi';
         print(x); // Maths pi
         x = 3.14; 
         print(x); // 3.14
    }
    
    Enter fullscreen mode Exit fullscreen mode
  • Jermaine
    JermaineFeb 25, 2019

    Thanks for sharing Nitish! Keep them coming.

  • josefatef
    josefatefMay 26, 2019

    Thanks

  • Vy
    VyApr 28, 2020

    Very usefull post for understanding. Thnx !

Add comment