第四章 变量 作用域和内存问题(部分)
来源:互联网 发布:帝国cms怎么建站 编辑:程序博客网 时间:2024/05/16 12:17
JavaScript变量的值及其数据类型 可以在脚本的生命周期内改变。
EC,AS次日普通变量可能包含两种不同数据类型的值:基本类型和引用类型值。
基本类型:简单的数据段。 引用类型:可能有多个值构成的对象。
5中基本数据类型:Undefined、Null、Boolean、Number、String。
引用类型的值是保存在内存中的对象。JavaScript不允许直接访问内存中的位置,不能直接操作对象的内存空间。在操作对象时,实际上操作的是对象的引用而不是实际对象。
引用类型的值是按引用访问的。
当从一个变量向另一个变量赋值引用类型的值时,变量对象中存储的值也会被复制。这个值得副本是一个指针,指针指向存储在堆中的一个对象。复制结束后,两个变量引用的是同一个对象。也就是说,改变堆中的对象值,两个变量中对象值均会改变;改变一个变量的值,另一个变量的值也会改变。
var obj1 = new Object( );
var obj2 = obj1;
obj1.name = “Book”;
alert(obj2.name);//输出结果为Book。
传递参数:
ECMScript中所有函数的参数按值传递。(把函数外部的值赋值给函数内部的参数,如同把值从一个变量复制到另一个变量)。
向参数传递基本类型时,被传递的值会被复制给一个局部变量;向参数传递引用类型的值时,值得内存地址会被复制给一个局部变量。局部变量的变化会引起引用类型值得变化,不会引起基本类型值得变化。
1.
Function addTen(num){
num +=10;
return num;
}
var count = 20;
var result =addTen(count);
alert(count);//20
alert(result);//30
2.
function setName(obj){
obj,name = “Boook”;
}
var person = new Object();
setName(person);
alert(person.name);//Book
3.
function setName(obj){
obj.Name = “Book”;
obj = new Object();
obj.Name= “HAHA”;
}
var person= new Object();
serName(person);
alert(person.Name);//Book
检测类型:
Typeof操作符:确定一个变量是何种数值。
var a = “Nick”;
var b = true;
var c = 22;
var u;
var n = null;
var o = object;
alert(typeof a);//String
alert(typeof b);//boolean
alert(typeof c); //number
alert(typeof u);//undefined
alert(typeof n);//object 若变量值是一个对象或null,typeof对象返回object
alert(typeof o);//object
作用域链
延长作用域链:
在作用域链前端临时增加一个变量对象,该变量对象会在代码执行后被移除。
try-catch语句的catch块
with语句
- 第四章 变量 作用域和内存问题(部分)
- 第四章(变量,作用域和内存问题)
- 第四章 变量、作用域和内存问题
- 第四章 变量、作用域和内存问题
- 第四章:变量、作用域和内存问题
- 第四章 变量、作用域和内存问题
- 第四章 变量、作用域和内存问题
- 第四章 变量、作用域和内存问题
- 第四章:变量、作用域和内存问题
- 第四章 变量、作用域和内存问题
- 第四章 变量、作用域和内存问题
- 第四章 变量、作用域和内存问题
- [高3笔记知识点]第四章.变量、作用域和内存问题-4.3.4管理内存
- JavaScript高级程序设计 第四章 — 变量、作用域和内存问题
- javascript高级程序设计学习笔记——第四章 变量、作用域和内存问题
- 《JavaScript高级程序设计》总结 第四章 变量、作用域和内存问题
- js高级教程阅读笔记 第四章-变量作用域和内存问题
- javascript高级程序设计第三版 第四章 变量、作用域和内存问题
- CentOS访问Windows共享文件夹的两种方法
- android studio2.3.2增加jni
- 利用java 写XML 修改XML文件
- python多线程爬虫学习--去除html的标签
- hadoop map reduce高级
- 第四章 变量 作用域和内存问题(部分)
- 链表倒序打印
- QT uint 转QString QString增加字符串
- C. Mittens----构造+贪心
- Bootstrap css学习笔记(三)——表单与按钮
- Fatal error in launcher: Unable to create process using '"'pip导入package是错误
- 利用JMeter 的 BeanShell 测试SDK
- Could not find result map XXX 解决办法
- Python from __future__ import division