欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入
在函数内,该变量的值为 “A centaur is probably a mounted Scythian warrior, misreported; that is, “;在函数外,该变量的值为这句话的其余部分: ”a horse with rider, as seen from a distance by a naive innocent.” */ 很重要的一点是注意变量是否是在其所属范围的开始处声明的。有时这会导致意想不到的情况。 tweak(); var aNumber = 100; function tweak() { var newThing = 0; // 显式声明 newThing 变量。 // 本语句将未定义的变量赋给 newThing,因为已有名为 aNumber 的局部变量。 newThing = aNumber; //下一条语句将值 42 赋给局部的 aNumber。aNumber = 42; if (false) { var aNumber; // 该语句永远不会执行。 aNumber = 123; // 该语句永远不会执行。 } // 条件语句结束。 } // 该函数定义结束。 当 JScript 运行函数时,首先查找所有的变量声明, var someVariable; 并以未定义的初始值创建变量。如果变量被声明时有值, var someVariable = “something”; 那么该变量仍以未定义的值初始化,并且只有在运行了声明行时才被声明值取代,假如曾经被声明过。 JScript 在运行代码前处理变量声明,所以声明是位于一个条件块中还是其他某些结构中无关紧要。JScript 找到所有的变量后立即运行函数中的代码。如果变量是在函数中显式声明的 ? 也就是说,如果它出现于赋值表达式的左边但没有用 var 声明 ? 那么将把它创建为全局变量。 复制、传递和比较数据 在 JScript 中,对数据的处理取决于该数据的类型。 按值和按引用的比较 Numbers 和 Boolean 类型的值 (true 和 false) 是按值来复制、传递和比较的。当按值复制或传递时,将在计算机内存中分配一块空间并将原值复制到其中。然后,即使更改原来的值,也不会影响所复制的值(反过来也一样),因为这两个值是独立的实体。 对象、数组以及函数是按引用来复制、传递和比较的。 当按地址复制或传递时,实际是创建一个指向原始项的指针,然后就像拷贝一样来使用该指针。如果随后更改原始项,则将同时更改原始项和复制项(反过来也一样)。实际上只有一个实体;“复本”并不是一个真正的复本,而只是该数据的又一个引用。 当按引用比较时,要想比较成功,两个变量必须参照完全相同的实体。例如,两个不同的 Array 对象即使包含相同的元素也将比较为不相等。要想比较成功,其中一个变量必须为另一个的参考。要想检查两个数组是否包含了相同的元素,比较 toString() 方法的结果。 最后,字符串是按引用复制和传递的,但是是按值来比较的。请注意,假如有两个 String 对象(用 new String(“something”) 创建的),按引用比较它们,但是,如果其中一个或者两者都是字符串值的话,按值比较它们。 注意 鉴于 ASCII和 ANSI 字符集的构造方法,按序列顺序大写字母位于小写字母的前面。例如 “Zoo” 小于 “aardvark”。如果想执行不区分大小写的匹配,可以对两个字符串调用 toUpperCase() 或 toLowerCase()。
[1][2][3][4]
当你困难失望的时候,最重要的是事瞧得起你自己;