实现版本 | Navigator 2.0 |
最基本的赋值操作数是等号(=),它会将右操作数的值直接赋给左操作数。也就是说,x = y 将把 y 的值赋给 x。其它的赋值操作符都是标准操作的缩略形式,列在表 2.2 中。
表 2.2 赋值操作符
缩写操作符 | 含义 |
---|---|
x += y | x = x + y |
x -= y | x = x - y |
x *= y | x = x * y |
x /= y | x = x / y |
x %= y | x = x % y |
x <<= y | x = x << y |
x >>= y | x = x >> y |
x >>>= y | x = x >>> y |
x &= y | x = x & y |
x ^= y | x = x ^ y |
x |= y | x = x | y |
实现版本 | Navigator 2.0 |
相关内容列在了表 2.3 中。对于该表中的示例,我们假定 var1 被赋予了值 3,而 var2 被赋予了值 4。
表 2.3 比较操作符
操作符 | 描述 | 返回真的例子 |
---|---|---|
相等(==) | 如果操作数相等的话则返回真。 | 3 == var1 |
不等(!=) | 如果操作数不等的话则返回真。 | var1 != 4 |
大于(>) | 如果左操作数大于右操作数的话则返回真。 | var2 > var1 |
大于或等于(>=) | 如果左操作数大于等于右操作数的话则返回真。 | var2 >= var1 var1 >= 3 |
小于(<) | 如果左操作数小于右操作数的话则返回真。 | var1 < var2 |
小于或等于(<=) | 如果左操作数小于等于右操作数的话则返回真。 | var1 <= var2 var2 <= 5 |
实现版本 | Navigator 2.0 |
var1 % var2
取余运算符将返回第一个操作数除以第二个操作数的余数。对于上面的例子来说,将返回 var1 变量除以 var2 变量的余数。更具体的例子是,12 % 5 将返回 2。
var++ 或 ++var
该自增操作符将自增操作数(自己加上 1)并返回一个值。如果写在变量后面(如 x++),将返回自增前的值。如果写在变量前面(如 ++x),将返回自增后的值。
例如,如果 x 是 3,那么语句 y = x++ 将先把 y 置为 3 再将 x 自增为 4。相反,语句 y = ++x 将先将 x 自增为 4,再将 y 置为 4。
var-- 或 --var
该自增操作符将自减操作数(自己减去 1)并返回一个值。如果写在变量后面(如 x--),将返回自减前的值。如果写在变量前面(如 --x),将返回自减后的值。
例如,如果 x 是 3,那么语句 y = x-- 将先把 y 置为 3 再将 x 自减为 2。相反,语句 y = --x 将先将 x 自减为 2,再将 y 置为 2。
表 2.4 JavaScript 位操作符总览
表 2.4 位操作符
操作符 | 用法 | 描述 |
---|---|---|
按位与 | a & b | 如果两个操作数对应位都是 1 的话则在该位返回 1。 |
按位或 | a | b | 如果两个操作数对应位都是 0 的话则在该位返回 0。 |
按位异或 | a ^ b | 如果两个操作数对应位只有一个 1 的话则在该位返回 1。 |
求反 | ~ a | 反转操作数的每一位。 |
左移 | a << b | 将 a 的二进制形式左移 b 位。右面的空位补零。 |
算术右移 | a >> b | 将 a 的二进制形式右移 b 位。忽略被移出的位。 |
逻辑右移 | a >>> b | 将 a 的二进制形式右移 b 位。忽略被移出的位,左侧补入 0。 |
实现版本 | Navigator 2.0 |
实现版本 | Navigator 2.0 |
移位操作符将把两个操作符转换为 32 位整型数值,并返回与左操作数类型相同的结果。
例如,9<<2 结果为 36,因为 1001 向左移两位变成 100100,这是 36。
例如,9>>2 结果为 2,因为 1001 右移两位变成 10,这是 2。反之,-9>>2 结果为 -3,因为要考虑到符号位。
例如,19>>>2 结果为 4,因为 10011 右移两位变成 100,这是 4。对于非负数,算术右移和逻辑右移结果相同。
实现版本 | Navigator 2.0 |
表 2.5 描述的很清楚。
表 2.5 逻辑操作符
操作符 | 用法 | 描述 |
---|---|---|
与(&&) | expr1 && expr2 | 如果 expr1 为假则返回之,否则返回 expr2。 |
或(||) | expr1 || expr2 | 如果 expr1 为真则返回之,否则返回 expr2。 |
非(!) | !expr | 如果 expr 为真则返回假,否则返回真。 |
<script language="JavaScript1.2">"
v1 = "猫";
v2 = "狗";
v3 = false;
document.writeln("t && t 返回 " + (v1 && v2));
document.writeln("f && t 返回 " + (v3 && v1));
document.writeln("t && f 返回 " + (v1 && v3));
document.writeln("f && f 返回 " + (v3 && (3 == 4))); document.writeln("t || t 返回 " + (v1 || v2));
document.writeln("f || t 返回 " + (v3 || v1));
document.writeln("t || f 返回 " + (v1 || v3));
document.writeln("f || f 返回 " + (v3 || (3 == 4)));
document.writeln("!t 返回 " + (!v1));
document.writeln("!f 返回 " + (!v3));
</script>
该脚本将显示下列内容:
t && t 返回 狗
f && t 返回 false
t && f 返回 false
f && f 返回 false
t || t 返回 猫
f || t 返回 猫
t || f 返回 猫
f || f 返回 false
!t 返回 false
!f 返回 true
实现版本 | Navigator 2.0 |
组合赋值操作符 += 也可用于连接字符串。例如,如果变量 mystring 的值为“alpha”,表达式 mystring += "bet" 将计算出“alphabet”并将其赋给 mystring。
实现版本 | Navigator 2.0 |
condition | 计算结果为 true 或 false 的表达式 |
expr1, expr2 | 任意类型值的表达式。 |
document.write ("收费为 " + (isMember ? "$2.00" : "$10.00"))
实现版本 | Navigator 2.0 |
expr1, expr2 | 任意表达式 |
例如,如果 a 是一个 10x10 的二维数组,下面的代码将使用逗号操作符一次自增两个变量。结果是打印出该数组副对角线上的元素:
for (var i=0, j=10; i <= 10; i++, j--)
document.writeln("a["+i+","+j+"]= " + a[i,j])
实现版本 | Navigator 2.0 |
objectName | 对象的名称。 |
属性 | 已有的属性。 |
index | 一个整型数值,表明了要删除的元素在数组处的位置。 |
如果删除成功,delete 操作符将把属性或元素设为 undefined(未定义)。delete 总是返回 undefined。
实现版本 | Navigator 2.0 |
objectName | 新对象实例的名称。 |
objectType | 对象类型。它必须是一个定义对象类型的函数。 |
param1...paramN | 对象的属性值。这些属性是 objectType 函数的参数。 |
你总可以向已经定义的对象中添加属性。例如,car1.color = "black" 将给 car1 添加一个叫 color 的属性,并给其赋值“black”。不过这对其它任何对象并没有什么作用。要给同一类型的所有对象都添加一个新的属性,你必须向 car 对象类型的定义中添加属性。
你可以使用 Function.prototype 属性向先前定义的对象类型中添加属性。这将定义一个被所有由该函数创建的对象共享的属性,而不只是一个对象类型实例才有。下面的代码将为所有 car 类型的对象添加一个 color 属性,然后将对象 car1 的 color 属性赋值。更多信息,请参看 prototype。
Car.prototype.color=null
car1.color="black"
function car(make, model, year) {
this.make = make
this.model = model
this.year = year
}
现在你就可以用下面的方法创建一个叫做 mycar 的对象了:
mycar = new car("Eagle", "Talon TSi", 1993)
该语句创建了 mycar 并将其属性赋了指定的值。也就是说,mycar.make 的值是字符串“Eagle”,mycar.year 是整型数 1993,等等。
使用 new 你可以创建任意多个 car 对象。如,
kenscar = new car("Nissan", "300ZX", 1992) 示例 2: 对象属性就是另外一个对象。假设你按照下面代码定义了一个叫做 person 的对象类型:
function person(name, age, sex) {
this.name = name
this.age = age
this.sex = sex
}
然后创建了两个新的 person 实例:
rand = new person("Rand McNally", 33, "M")
ken = new person("Ken Jones", 39, "M")
现在你可以重写 car 的定义,以便包含一个 person 对象作为 owner 属性表明车主:
function car(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
}
要创建一个新对象的实例,你可以使用下面的代码:
car1 = new car("Eagle", "Talon TSi", 1993, rand);
car2 = new car("Nissan", "300ZX", 1992, ken)
请注意,我们在创建对象的时候并没有给出一个常量字符串或者一个整型值,而是传递了对象 kand 和 ken 作为 owner 的参数。要找出 car2 车主的名字的方法是:
car2.owner.name
实现版本 | Navigator 2.0 |
function validate(obj, lowval, hival) {
if ((obj.value < lowval) || (obj.value > hival))
alert("无效数据e!")
}
你可以在每个窗体元素的 onChange 事件句柄中调用 validate,只用下面的格式传递 this 作为参数就行了:
<B>请输入 18 到 99 之间的数值:</B>
<INPUT TYPE = "text" NAME = "age" SIZE = 3
onChange="validate(this, 18, 99)">
1. typeof operand
2. typeof (operand)
typeof 操作符将返回一个字符串,表明未计算的 operand 操作数是什么类型的。operand 是一个要返回类型的字符串变量、关键字或者对象。圆括号可选。
实现版本 | Navigator 3.0 |
假设你定义了下面的变量:
var myFun = new Function("5+2")
var shape="round"
var size=1
var today=new Date()
typeof 操作符将返回下面的值:
typeof myFun is object
typeof shape is string
typeof size is number
typeof today is object
typeof dontExist is undefined
对于关键字 true 和 null,typeof 操作符返回下面的结果:
typeof true is boolean
typeof null is object
对于数值或字符串,typeof 操作符返回下面的结果:
typeof 62 is number
typeof 'Hello world' is string
对于属性值,typeof 操作符返回属性所含值的类型:
typeof document.lastModified is string
typeof window.length is number
typeof Math.LN2 is number
对于方法和函数,typeof 操作符返回下面的结果:
typeof blur is function
typeof eval is function
typeof parseInt is function
typeof shape.split is function
对于预定义对象,typeof 操作符返回下面的结果:
typeof Date is function
typeof Function is function
typeof Math is function
typeof Option is function
typeof String is function
1. javascript:void (expression)
2. javascript:void expression
void 操作符指定要计算一个表达式但是不返回值。expression 是一个要计算的 JavaScript 标准的表达式。表达式外侧的圆括号是可选的,但是写上去是一个好习惯。
实现版本 | Navigator 3.0 |
你可以使用 void 操作符指定超级链接。表达式会被计算但是不会在当前文档处装入任何内容。
下面的代码创建了一个超级链接,当用户点击以后不会发生任何事。当用户点击链接时,void(0) 计算为 0,但在 JavaScript 上没有任何效果。
<A HREF="javascript:void(0)">单击此处什么也不会发生</A>
下面的代码创建了一个超级链接,用户单击时会提交表单。
<A HREF="javascript:void(document.form.submit())">
单击此处提交表单</A>