首页 > 代码库 > JavaScript高级程序设计(第三版)第四章 变量,作用域和内存问题

JavaScript高级程序设计(第三版)第四章 变量,作用域和内存问题

JavaScript变量可以用来保存两种类型的值:基本类型值和引用类型值。基本类型值和引用类型值具有以下特点:

  • 基本类型值在内存中占据固定大小的空间,因此被保存在栈内存中;
  • 从一个变量向另一个变量复制基本类型值,会创建这个值的一个副本;
  • 引用类型的值是对象,保存在堆内存中;
  • 包含引用类型值得变量实际上包含的并不是对象本身,而是一个指向该对象的指针;
  • 从一个变量向另一个变量复制引用类型的值,复制的其实是指针,因此两个变量最终都指向同一个对象;
  • 确定一个值是哪种基本类型可以使用typeof操作符,而确定一个值是哪种引用类型可以使用instanceof操作符。

4.1.3 传递参数

 1     <script type="text/javascript"> 2         function addTen(num) { 3             num += 10; 4             return num; 5         } 6          7         var count = 20 8         var result = addTen(count); 9         alert(count);    //2010         alert(result);   //1011 12     </script>
1     <script type="text/javascript">2         function setName(obj) {3             obj.name = "Nicholas";4         }       5         var person = new Object();6         setName(person);7         alert(person.name);    //"Nicholas"8     </script>

 4.2.2 没有块级作用域

    <script type="text/javascript">              function add(num1, num2) {            var sum = num1 + num2;            return sum;        }             var result = add(10, 20);  //30        alert(sum);     // 由于sum不是有效的变量,因此会导致错误     </script>
1     <script type="text/javascript">     2         function add(num1, num2) {3             sum = num1 + num2;4             return sum;5         }       6         var result = add(10, 20);  //307         alert(sum);                //30     8     </script>
1     <script type="text/javascript">2         var color = "blue";3         4         function getColor(){5             return color;6         }7         8         alert(getColor());  //"blue"   9     </script>
 1     <script type="text/javascript"> 2         var color = "blue"; 3          4         function getColor(){ 5             var color = "red"; 6             return color; 7         } 8          9         alert(getColor());  //"red" 10     </script>

 

JavaScript高级程序设计(第三版)第四章 变量,作用域和内存问题