|
Microsoft(R) JScript(R) 复制、传递和比较数据 |
JScript 教程 上一节 下一节 |
在 Microsoft JScript 中,对数据的处理取决于该数据的类型。
Numbers 和 Boolean 类型的值 (true 和 false) 是按值来复制、传递和比较的。当按值复制或传递时,将在计算机内存中分配一块空间并将原值复制到其中。然后,即使更改原来的值,也不会影响所复制的值(反过来也一样),因为这两个值是独立的实体。对象、数组以及函数在大多数环境中都是按引用来复制、传递和比较的。 当按地址复制或传递时,实际是创建一个指向原始项的指针,然后就像拷贝一样来使用该指针。如果随后更改原始项,则将同时更改原始项和复制项(反过来也一样)。实际上只有一个实体;“复本”并不是一个真正的复本,而只是该数据的又一个引用。
注意 可以更改对象和数组的该行为,方法是为其指定 assign( ) 方法。 最后,字符串是按引用复制和传递的,但是是按值来比较的。
注意 鉴于 ASCII 和 ANSI 字符集的构造方法,按序列顺序大写字母位于小写字母的前面。例如 "Zoo" 小于 "aardvark"。
按值传递一个参数给函数就是制作该参数的一个独立复本,即一个只存在于该函数内的复本。另外,如果按引用传递一个参数,且该函数更改了该参数的值,则这个值在脚本的任何位置都会被改变。
当按值进行检验时,是比较两个截然不同的项以查看它们是否相等。通常,该比较是逐字节进行的。当按引用进行检验时,是看这两项是否是指向同一个原始项的指针。如果是,则比较结果是相等;如果不是,即使它们每个字节都包含完全一样的值,比较结果也为不相等。按引用复制和传递字符串能节约内存;但是由于在字符串被创建后不能进行更改,因此可以按值进行比较。这样可以检查两个字符串是否包含相同的内容,即使它们是完全独立产生的。