《JavaScript高级程序设计》总结二
来源:互联网 发布:中世纪骑兵知乎 编辑:程序博客网 时间:2024/05/22 15:03
一:基本类型和引用类型的值
ECMAScript变量包含两种不同数据类型的值:基本类型值和引用类型的值。
- 基本类型值 –> 简单的数据段
*5种基本数据类型是按值访问的,因为可以操作保存在变量的实际值。
*不能给基本类型的值添加属性。
*复制值会新创建一个新值,两个变量是完全独立的。
*确定一个值是哪种基本类型可以使用typeof操作符 - 引用类型值 –> 可能由多个值构成的对象
*引用类型的值保存在内存中的对象。js不允许直接访问内存中的位置即不能直接操作对象的内存空间,实际操作的是操作对象的引用而不是实际对象。因此是按引用访问的。
*能给引用类型值动态的添加属性和方法。
*虽然还是会创建一个新变量并分配空间,但是这个值实际只是一个指针,而这个指针指向存储在堆内存中的一个对象,即引用同一个对象。
*确定一个值是i哪种引用类型可以使用instanceof操作符。
二:传递参数
ECMAScript中所有的参数都是按值传递的。
function add(num) { //被传递的值会复制给一个局部变量 num += 10; return num;}var count = 20;var result = add(count);alert(count); //20,没有变化alert(result); //30function setName(obj) { obj.name = "Grace"; obj = new Object(); //即使在函数内部修改了参数的值但原始的引用未改变。实际上是该引用指向了一个局部变量而且这局部变量在函数执行完毕后立即被销毁 obj.name = "Lily"; }var person = new Object();setName(person);alert(person.name); //Grace
三:执行环境
*每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。
*全局执行环境默认为window对象。
*某个执行环境中的所有代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁。
*当代码在一个环境中执行时会创建变量对象的一个作用域链。作用域链的用途是保证对执行环境有权访问的所有变量个函数的有序访问。活动对象最开始只包含一个arguments对象(这个对象在全局对象中不存在),再下一个包含环境,一直延续到全局执行环境。
四:作用域
js没有块级作用域的概念,即不是花括号封闭的代码都有自己的作用域
if(true) { //if语句中变量声明会将变量添加带当前的执行环境中,for语句初始化定义的变量也一样 var color = "red";}alert(color); //red
0 0
- 《JavaScript高级程序设计》总结二
- javascript高级程序设计总结之二
- javascript 高级程序设计 二
- JavaScript高级程序设计读书笔记(二)
- javascript高级程序设计笔记(二)
- javascript之高级程序设计二
- 《Javascript高级程序设计》--读书笔记(二)
- JavaScript高级程序设计(二)
- javascript高级程序设计总结之一
- javaScript高级程序设计阅读总结
- 《JavaScript高级程序设计》总结一
- 《JavaScript高级程序设计》总结四
- javascript创建对象总结(javascript高级程序设计)
- JavaScript高级程序设计学习总结二(JavaScript复杂的变量与内存问题)
- JavaScript高级程序设计学习总结四(JavaScript引用类型二)
- javascript高级程序设计 -- 读书笔记(二)
- javascript高级程序设计学习(二)----函数
- <JavaScript高级程序设计>笔记二: 创建对象
- 判断tcp 是否正常连接
- java 四大特征(3)
- (四)3抢占和上下文切换
- Fedora系统安装MySQL后死活无法启动的问题
- 263. Ugly Number
- 《JavaScript高级程序设计》总结二
- [LeetCode]Reverse Integer
- Windows 各种计时函数总结
- Reactor模式,两种高效的并发模式
- 第三周项目2-建设“顺序表”算法库
- Spring 自动注入依赖
- Windows下编译OpenSSL
- 旅行家的预算(贪心)
- android px转dip,sp