《JavaScript高级程序设计》总结二
2016-09-20 19:28
260 查看
一:基本类型和引用类型的值
ECMAScript变量包含两种不同数据类型的值:基本类型值和引用类型的值。
基本类型值 –> 简单的数据段
*5种基本数据类型是按值访问的,因为可以操作保存在变量的实际值。
*不能给基本类型的值添加属性。
*复制值会新创建一个新值,两个变量是完全独立的。
*确定一个值是哪种基本类型可以使用typeof操作符
引用类型值 –> 可能由多个值构成的对象
*引用类型的值保存在内存中的对象。js不允许直接访问内存中的位置即不能直接操作对象的内存空间,实际操作的是操作对象的引用而不是实际对象。因此是按引用访问的。
*能给引用类型值动态的添加属性和方法。
*虽然还是会创建一个新变量并分配空间,但是这个值实际只是一个指针,而这个指针指向存储在堆内存中的一个对象,即引用同一个对象。
*确定一个值是i哪种引用类型可以使用instanceof操作符。
二:传递参数
ECMAScript中所有的参数都是按值传递的。
三:执行环境
*每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。
*全局执行环境默认为window对象。
*某个执行环境中的所有代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁。
*当代码在一个环境中执行时会创建变量对象的一个作用域链。作用域链的用途是保证对执行环境有权访问的所有变量个函数的有序访问。活动对象最开始只包含一个arguments对象(这个对象在全局对象中不存在),再下一个包含环境,一直延续到全局执行环境。
四:作用域
js没有块级作用域的概念,即不是花括号封闭的代码都有自己的作用域
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); //30 function 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
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- JavaScript 基础、进阶以及 Ubuntu 系统中的 JavaScript 开发调试工具
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 设计模式---状态模式在web前端中的应用
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- 材质