JavaScript:变量

  ECMAScript 变量可能包含两种不同的数据类型的值,基本类型值和引用类型值。基本类型值指的是简单的数据段,而引用类型值指由多个值构成的对象。   

  在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值。常用的5种基本数据类型:Undefined、Null、Boolean、Number和String。它们都是按值访问的。因为可以操作保存在变量中的实际值。

  引用类型的值是保存在内存中的对象。与其他语言不同,JavaScript不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。在操作对象时,实际是在操作对象的引用而不是实际的对象,为此,引用类型的值是按引用访问的。

  基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。引用类型值指的是那些保存在堆内存中的对象,意思是变量中保存的实际上只是一个指针。

1. 定义变量

     比如:          

            var person = new Object();
            person.name = "hello";
            alert(person.name);

     基本类型的值不能添加属性,尽管这样做不会导致任何错误。比如:

            var name = "Nicholas";
            name.age = 20;
            alert(name.age); //undefined

    [1]定义:可变的量,相当于给一个不定的数据起了一个外号。变量是存储信息的容器。

    [2]特性:js中的变量是松散类型的,可以保存任何类型的数据。它只是在特定时间用于保存特定值的一个名字而已。由于不存在定义某个变量必须要保存何种数据类型值的规则,变量的值及其数据类型可以在脚本的生命周期内改变。

    [3]变量声明:变量可以在声明时赋值,但不能有其他操作,如+=、-=等

            var a = 2;//是正确的
            var a += 2;//是错误的
            var a = 2++;//是错误的,++只能用于变量,不能用于常量

    [4]注意:用var操作符定义的变量将成为定义该变量的作用域中的局部变量。若省略var操作符,可以创建一个全局变量,但在严格模式下会抛出 ReferenceError错误

    [5]var:使用var声明的变量会自动被添加到最接近的环境中。如果初始化变量时没有使用var声明,该变量会自动被添加到全局环境。在严格模式下,初始化未经声明的变量会导致错误。

    [6]局部变量:如果局部环境中存在同名标识符,就不会使用位于父环境中的标识符。任何位于局部变量color的声明之后的代码,如果不使用window.color都无法访问全局color变量

2. 变量的复制

            var num1 = 10;
            var num2 = num1;

   看到上面的例子,是把一个变量num1 复制给另一个变量num2。num2的值只是num1中的10的一个副本,这2个变量可以参与任何操作而不会相互影响。

当变量间复制引用类型的值时,就有不同之处。这个副本实际是一个指针,指向存储在堆中的一个对象。复制结束后两个变量实际上将引用同一个对象。因此,改变其中一个变量就会影响另一个变量。如下面的例子:

           var obj1 = new Object();
           var obj2 = obj1;
           obj1.name = "Nicholas";
           alert(obj2.name); //Nicholas

3、检测类型

   typeof操作符是确定一个变量是字符串、数字、布尔值,还是undefined的最佳工具。如果变量的值是一个对象或null,则typeof操作符会返回“object”。

在检测引用类型的值时,typeof操作符用处不大,通常,我们并不是想知道某个值是对象,而是想知道它是什么类型的对象。为此,ECMAscript提供了instanceof操作符,例如:     

alert(person instanceof Object);//变量person是Object吗?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值