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);    //20
10         alert(result);   //10
11 
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);  //30
7         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>
原文地址:https://www.cnblogs.com/fashion1993/p/4017791.html