ghostcode
10/18/2015 - 7:34 AM

JavaScript变量复习

JavaScript变量复习

  1. JavaScript是非类型语言,及变量可以存储任何类型的值。
  2. JavaScript(以前)的程序多是短小的脚本,所以并不需要那么精确,而且我们从简单的语法中也获益匪浅。
  3. 变量在使用之前必须先声明(可以不赋值)。
  4. var声明的变量是永久性的,也就是说用delete运算符来删除这些变量会引发错误。
  5. 隐式声明的变量总是被创建为全局变量,即使是在函数中创建的。
  6. 隐式创建的变量可以使用delete运算符删除。
  7. 没有块级作用域
var scope = "global"
function f(){
  alert(scope)
  var scope = "local"
  alert(scope)
}
f() // undefined local

等价于

var scope = "global"
function f(){
  var scope
  alert(scope)
  scope = "local"
  alert(scope)
}
f() // undefined local
  1. 未声明变量和未赋值变量,前者直接使用会报错,后者不会。
  2. 基本类型:数值、布尔值、null、undefined,引用类型:对象、数组、函数。
  3. 基本类型在内存中有固定大小,数值占8个字节,布尔值占1个字节,数值类型是基本类型中最大的数据类型。
  4. 引用类型没有固定大小,但是包含值的指针和内存地址。
  5. 变量保存了基本类型的实际值,但是对引用类型的值却只保存对它的引用。
var a = 3.14
var b = a
a = 4
alert(b)
var a = [1,2,3]
var b = a
a[0] = 99
alert(b)
  1. 自动垃圾回收机制(系统检测到没有变量引用“hello”,就会释放该字符串占用的内存空间)
var a = "hello"
var b = a.toUpperCase()
a = b
  1. 每个执行环境都有一个和它关联在一起的作用域链(对象列表和对象链)。
  2. 查找变量(变量名解析)时,从第一个对象开始直到找到或者顶层对象。