C C T B H P N

JavaScript SnapShot1

literals are value types

In body element

<script>
  /*
    * Note:
    * Literals are value types:
    * - creates two literals
    * - assigns second to first
    * - changes first
    * - second doesn't change
    * - showvalue(obj) is defined in DemoScripts.js
    */
  var s1 = "first string";
  var s2 = "second string";
  showvalue('s1 = \"' + s1 + '\"');
  showvalue('s1 is ' + typeof (s1));
  showvalue('s2 = \"' + s2 + '\"');
  showvalue('s2 is ' + typeof (s1));
  putline();
  s2 = s1;
  s1 = "new first string";
  showvalue('s1 = \"' + s1 + '\"');
  showvalue('s2 = \"' + s2 + '\"');
</script>
    
 

Result:

strings are immutable so behave like value types

In body element

<script>
  /*
    * Note:
    * Strings are immutable reference types:
    * - creates two strings
    * - assigns second to first
    * - changes first
    * - second doesn't change
    * - showvalue(obj) is defined in DemoScripts.js
    */
  var s1 = new String("first string");
  var s2 = new String("second string");
  showvalue('s1 = \"' + s1 + '\"');
  showvalue('s1 is ' + typeof (s1));
  showvalue('s2 = \"' + s2 + '\"');
  showvalue('s2 is ' + typeof (s1));
  putline();
  s2 = s1;
  s1 = new String("new first string");
  showvalue('s1 = \"' + s1 + '\"');
  showvalue('s2 = \"' + s2 + '\"');
</script>
    
 

Result:

objects are reference types

In body element

<script>
   /*
    * Note:
    * Objects are reference types:
    * - creates two array Objects
    * - assigns second to first
    * - changes first
    * - second changes
    * - showvalue(obj) is defined in DemoScripts.js
    */
  var a1 = ['one', 'two', 'three'];
  var a2 = ['three', 'two', 'one'];
  showvalue('a1 = ' + a1);
  showvalue('a1 is ' + typeof (a1));
  showvalue('a2 = ' + a2);
  showvalue('a2 is ' + typeof (a2));
  putline();
  a2 = a1;
  a1[0] = 'X';
  showvalue('a1 = ' + a1);
  showvalue('a2 = ' + a2);
</script>
    
 

Result:

More Literals and Objects:

In body element

<script>
  /*
    * Note:
    * - show values and types for: int, double, boolean, array, object
    */
  showvalue('-- integer --');
  var n1 = 3;
  showvalue('n1 = ' + n1);
  showvalue('typeof(n1) = ' + typeof (n1));
  var n2 = new Number(3);
  showvalue('n2 = ' + n2);
  showvalue('typeof(n2) = ' + typeof (n2));
  putline();

  showvalue('-- double --');
  var n3 = 3.5;
  showvalue('n3 = ' + n3);
  showvalue('typeof(n3) = ' + typeof (n3));
  var n4 = new Number(3.5);
  showvalue('n4 = ' + n4);
  showvalue('typeof(n4) = ' + typeof (n4));
  putline();

  showvalue('-- boolean --');
  var n5 = true;
  showvalue('n5 = ' + n5);
  showvalue('typeof(n5) = ' + typeof (n5));
  var n6 = new Boolean(false);
  showvalue('n6 = ' + n6);
  showvalue('typeof(n6) = ' + typeof (n6));
  putline();

  showvalue('-- array --');
  var n7 = [1, 2, 3];
  showvalue('n7 = ' + n7);
  showvalue('typeof(n7) = ' + typeof (n7));
  var n8 = new Array(4, 5, 6);
  showvalue('n8 = ' + n8);
  showvalue('typeof(n8) = ' + typeof (n8));
  putline();

  showvalue('-- object --');
  var n9 = { name: 'Jim', location: 'Syracuse NY' } ;
  showvalue('n9 = ' + n9);
  showvalue('n9.name = ' + n9.name);
  showvalue('n9.location = ' + n9.location);
  showvalue('typeof(n9) = ' + typeof (n9));
  var n10 = new Object({ university:'SU', department:'EECS'});
  showvalue('n10 = ' + n10);
  showvalue('n10.university = ' + n10.university);
  showvalue('n10.department = ' + n10.department);
  showvalue('typeof(n10) = ' + typeof (n10));
</script>
    

Result: