变量、作用域、内存问题
基本类型值:指的是简单的数据段。如undefined、null、boolean、number、string。这5种基本数据类型是按值访问的。
引用类型值:指那些可能由多个值构成的对象。引用类型的值是保存在内存中的对象。引用类型的值实际上是按引用访问的。
函数参数实际上是函数的局部变量。
检测类型: var s = "Nicholas"
var b = true
var i = 22
var u
var n = null
var o = new Object()
alert(typeof s) //string
alert(typeof b) //boolean
alert(typeof i) //number
alert(typeof u) //undefined
alert(typeof n) //object
alert(typeof o) //object
typeof操作符用来检测基本数据类型。
instanceof用来检测引用类型的值:
alert(person instanceof Object) //变量person是Object吗?
alert(colors instanceof Array) //变量colors是Array吗?
alert(pattern instanceof RegExp)//变量pattern是RegExp吗?
如果变量是引用类型的实例,instanceof操作符就会返回true。
在检测一个引用类型值和Object构造函数时,instanceof操作符始终会返回true。当然,如果使用instanceof操作符检测基本类型值,则该操作符始终会返回false。因为基本类型不是对象。
在Web浏览器中,全局执行环境被认为时window对象,因此所有全局变量和函数都是作为window属性和方法创建的。某个执行环境中的所有代码执行完毕后,该坏境被销毁,保存在其中的所有变量和函数定义也随之销毁。
每个函数都有自己执行坏境。当执行流进入一个函数时,函数的坏境就会被推入一个环境栈中,而在函数执行之后,栈将其环境弹出,把控制权返回给之前的执行环境。