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>