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

时间:2023-03-09 20:05:11
JavaScript高级程序设计(第三版)第四章 变量,作用域和内存问题

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

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

4.1.3 传递参数

     <script type="text/javascript">
function addTen(num) {
num += 10;
return num;
} var count = 20
var result = addTen(count);
alert(count); //
alert(result); // </script>
     <script type="text/javascript">
function setName(obj) {
obj.name = "Nicholas";
}
var person = new Object();
setName(person);
alert(person.name); //"Nicholas"
</script>

4.2.2 没有块级作用域

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