javascript变量

5种简单数据类型(基本数据类型)

undefined  null  boolean  number  string (还有一种复杂的数据类型:object)

变量的两种不同的数据类型:基本类型(简单数据段)、引用类型(可能由多个值构成对象)

1、基本类型

var num1 = 5;
var num2 = num1;

num1与num2完全独立,不会相互影响

 

2、引用类型——按引用访问、保存在内存中的对象(js不允许直接访问内存

var person1 = new object();
var person2 = person1;

person1和person2实际引用一个对象,互相影响

访问变量有按值和按引用两种方式,而参数只能按值传递

function addTen(num){
     num+=10;
     return num;
}
var count = 20;
var result = addTen(count);
alert(count);  //20
alert(result);  //30

在函数内部重写obj时,变量引用的局部对象,函数执行完立即销毁

function setName(obj){
    obj.name = "Ni";
    obj = new Object();
    obj.name = "Ge";
}

var person = new Object();
setName(person);
alert(person.name);  //"Ni"

 

typeof和instanceof

typeof操作符返回数据类型(返回字符串):undefined,boolean,string,number,object,function

 

var s = "Ni";
var b = true;
var i = 22;
var u = null;
var o = new Object();
var n;
var person = new Object();

 

typeof s      //string

typeof b      //boolean

typeof i      //number

typeof u     //object

typeof o     //object

typeof n     //undefined

person instanceof Object //true

pattern instanceof RegExp //true

 

执行环境及作用域

1、全局执行环境: window对象

全局执行环境的变量对象始终都是作用链域中的最后一个对象

2、执行环境: 每个函数都有自己的执行环境,执行环境定义了变量或函数有权访问的其他数据

3、作用域链的用途:代码在一个环境中执行时,创建对象的一个作用域链,保证有序

var color = "blue";
function changeColor(){
    if(color == "blue"){
         color = "red";
    }else{
         color = ""blue;
    }
}

函数changeColor()的作用域链包含两个对象:自己的变量对象arguments,全局环境变量对象color

var color = "blue";
function changeColor(){
     var anotherColor = "red";
     function swapColors(){
           var tempColor = anotherColor;
           anotherColor = color;
           color = tempColor;
           //这里可以访问color,anotherColor,tempColor
     } //这里可以访问color,anotherColor
}//这里可以访问color

 

4、没有块级作用域

由if,for语句创建的变量i即使在for循环结束后,也依旧存在于循环外部的执行环境中

5、var声明的是局部变量,不加var是全局变量。如果局部环境中存在同名标识符,就不会使用位于父环境中的标识符

 

posted @ 2016-07-17 17:09  Van小时  阅读(175)  评论(0编辑  收藏  举报