您的位置:首页 > Web前端 > JavaScript

《js高级程序设计》学习笔记--4.变量、作用域和内存问题

2016-07-04 16:06 651 查看
4.1基本类型和引用类型的值

<!DOCTYPE html>
<html>
<head>

<meta charset="UTF-8">
<title></title>
</head>
<body>

<!--1.基本类型和引用类型的值
基本类型值:简单的数据段 Undefined、Null、Boolean、Number、String 保存在变量
引用类型值:可能有多个值构成的对象 保存在内存 操作对象,实际是在操作对象的引用而不是实际的内存空间-->

<script type="text/javascript">

/* 1.1动态的属性:引用类型值可以动态的添加属性
var a = 10;
a.name = 'zhangsan';
alert(a.name); //undefined 基本类型不可以添加属性
var person = new Object();
person.name = 'zhangsan';
person.age = 20;
alert(person.name); //zhangsan
alert(person.age); //20 引用类型值 可以动态的 添加属性 以备将来使用

1.2复制变量值:
基本类型值 复制 的是变量值
引用类型值 复制 的是指针 指针指向保存值的内存地址
var a = 10;
var b = a;
a = 5;
alert(a); //5
alert(b); //10 改变a的值并不会影响b的值 。 基本类型值 复制 的是变量值
var person = new Object();
person.name = 'zhangsan';
var student = person;
alert(student.name); // zhangsan
person.name = 'lisi';
alert(student.name); // lisi 修改person的值 student的值也变了, 引用类型值的 复制 过程 其实是复制的指针,指针指向保存值的内存空间

1.3传递参数
ECMAScript中的所有参数都是按值传递的 也就是说跟 复制 的过程一样
即被传递的值是基本类型的值时,被传递的值会复制给参数
是引用类型的值时,会把这个值在内存中的地址复制给参数

function add(num){
num++;
return num;
}
var a = 10;
var result = add(a);
alert(a)//10 没变化 传参时 复制的 值
alert(result);//11

function change(person){
person.name = 'zhangsan';
return person;
}
var student = new Object();
student.name = 'lisi';
var stu1 = change(student);
alert(student.name); //zhangsan 函数内部的person和函数外部的student引用的是同一个对象 传参的过程就是 复制 保存被传递的值的内存地址的过程
alert(stu1.name); //zhangsan

1.4检测类型
typeof 可以检测基本数据类型 如果变量的值是null或者对象 typeof操作符则会返回object
typeof 并不能告诉我们 引用数据类型 属于 那个对象 所有 一般只用来检测 基本数据类型
var a = 'zhangsan';
var b = true;
var c = 10;
var d;
var e = null;
var f = new Object();
alert(typeof a); //string
alert(typeof b); //boolean
alert(typeof c); //number
alert(typeof d); //undefined
alert(typeof e); //obj
alert(typeof f); //obj

我们一般用instanceof操作符来检测变量是否是给定 引用类型 的实例
var arr = [1,2,3];
alert(arr instanceof Array);//true
var stu = new Object();
alert(stu instanceof Object); //true
alert(stu instanceof Array);//false

*/

</script>

</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js web前端 作用域