小于或等于(<=)
如果左操作数小于等于右操作数的话则返回真。
var1<=var2
var2<=5
算术操作符
将给定数值(常量或变量)进行给定的计算,并返回一个数值。
标准的算术操作符是加(+)、减(-)、乘(*)、除(/)四则运算。
这些操作符与在其它编程语言中的作用一样。
实现版本
Navigator2.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。
-(求相反数)
求相反数操作数将取得操作数的相反数。
例如,y=-x将把x相反数的值赋给y;也就是说,如果x是3的话,y就会获得-3而x还是3。
位操作符
执行位操作时,操作符会将操作数看作一串二进制位(1和0),而不是十进制、十六进制或八进制数字。
例如,十进制的9就是二进制的1001。
位操作符在执行的时候会以二进制形式进行操作,但返回的值仍是标准的JavaScript数值。
表2.4JavaScript位操作符总览
表2.4位操作符
操作符
用法
描述
按位与
a&b
如果两个操作数对应位都是1的话则在该位返回1。
按位或
a|b
如果两个操作数对应位都是0的话则在该位返回0。
按位异或
a^b
如果两个操作数对应位只有一个1的话则在该位返回1。
求反
~a
反转操作数的每一位。
左移
a<
将a的二进制形式左移b位。
右面的空位补零。
算术右移
a>>b
将a的二进制形式右移b位。
忽略被移出的位。
逻辑右移
a>>>b
将a的二进制形式右移b位。
忽略被移出的位,左侧补入0。
位逻辑操作符
实现版本
Navigator2.0
从原理上讲,位逻辑操作符的工作流程是这样的:
∙将操作数转换为32位的整型数值并用二进制表示。
∙第一操作数的每一位与第二操作数的对应位配对:
第一位对第一位,第二位对第二位,以此类推。
∙对每一对位应用操作符,最终结果按位组合起来。
例如,9的二进制表示为1001,15的二进制表示为1111。
所以如果对这两个数应用位逻辑操作符,结果应该像下面这样:
∙15&9结果为9(1111&1001=1001)
∙15|9为15(1111|1001=1111)
∙15^9为6(1111^1001=0110)
移位操作符
实现版本
Navigator2.0
移位操作符需要两个操作数:
第一个是要进行移位的数值,第二个指定要对第一个数移位的数目。
移位的方向由使用的操作符决定。
移位操作符将把两个操作符转换为32位整型数值,并返回与左操作数类型相同的结果。
<<(左移)
该操作符将把第一个操作数向左移若干位。
移出的位将被忽略。
右侧空位补零。
例如,9<<2结果为36,因为1001向左移两位变成100100,这是36。
>>(算术右移)
该操作符将把第一个操作数享有移若干位。
移出的位将被忽略。
左侧的空位补上与原来最左面位相同的值。
例如,9>>2结果为2,因为1001右移两位变成10,这是2。
反之,-9>>2结果为-3,因为要考虑到符号位。
>>>(逻辑右移)
该操作符将把第一个操作数享有移若干位。
移出的位将被忽略。
左侧的空位补零。
例如,19>>>2结果为4,因为10011右移两位变成100,这是4。
对于非负数,算术右移和逻辑右移结果相同。
逻辑操作符
逻辑操作符用Boolean值(布尔逻辑值)作为操作数,并返回Boolean值。
实现版本
Navigator2.0
表2.5描述的很清楚。
表2.5逻辑操作符
操作符
用法
描述
与(&&)
expr1&&expr2
如果expr1为假则返回之,否则返回expr2。
或(||)
expr1||expr2
如果expr1为真则返回之,否则返回expr2。
非(!
)
!
expr
如果expr为真则返回假,否则返回真。
示例
考虑下面的脚本:
"
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));
该脚本将显示下列内容:
t&&t返回狗
f&&t返回false
t&&f返回false
f&&f返回false
t||t返回猫
f||t返回猫
t||f返回猫
f||f返回false
!
t返回false
!
f返回true
简化计算
由于逻辑表达式是从左到右计算的,计算机自然不会傻到真的将全部表达式都计算一遍,它会试着偷偷懒,想办法按照下面的规则“简化”计算:
∙false&&任何值都会被简化为false。
∙true||任何值都会被简化计算为true。
逻辑运算的简化原则是保证逻辑运算本身总是正确的。
请注意,如果使用了简化规则,那么被简化掉的表达式就不会进行计算,所以也就不会产生它应该起的作用。
字符串操作符
除了比较操作符,可应用于字符串值的操作符还有连接操作符(+),它会将两个字符串连接在一起,并返回连接的结果。
例如,“my ”+“string”将返回字符串“my string”。
实现版本
Navigator2.0
组合赋值操作符+=也可用于连接字符串。
例如,如果变量mystring的值为“alpha”,表达式mystring+="bet"将计算出“alphabet”并将其赋给mystring。
特殊操作符
?
:
(条件操作符)
条件操作符是JavaScript所有操作符之中唯一需要三个操作数的。
该操作符通常用于取代简单的if语句。
实现版本
Navigator2.0
语法
condition?
expr1:
expr2
参数
condition
计算结果为true或false的表达式
expr1,expr2
任意类型值的表达式。
描述
如果condition为真的话,该操作符将返回expr1的值;否则返回expr2的值。
例如,要根据isMember变量的值显示不同的信息,可以使用此语句:
document.write("收费为"+(isMember?
"$2.00":
"$10.00"))
(逗号操作符)
逗号操作符非常简单。
它会依次计算两个操作数并返回第二个操作数的值。
实现版本
Navigator2.0
语法
expr1,expr2
参数
expr1,expr2
任意表达式
描述
你可以在你想要在只能填入一个表达式的地方写入多个表达式时使用逗号操作符。
该操作符最常见的用途是在for语句中使用多个变量作为循环变量。
例如,如果a是一个10x10的二维数组,下面的代码将使用逗号操作符一次自增两个变量。
结果是打印出该数组副对角线上的元素:
for(vari=0,j=10;i<=10;i++,j--)
document.writeln("a["+i+","+j+"]="+a[i,j])
delete
删除一个对象的属性或者数组中特定位置的元素。
实现版本
Navigator2.0
语法
deleteobjectName.property
deleteobjectName[index]
deleteproperty
参数
objectName
对象的名称。
属性
已有的属性。
index
一个整型数值,表明了要删除的元素在数组处的位置。
描述
第三种格式只在with语句中合法。
如果删除成功,delete操作符将把属性或元素设为undefined(未定义)。
delete总是返回undefined。
new
该操作符用于创建用户自定义对象类型或者拥有构造函数的内建对象类型的实例。
实现版本
Navigator2.0
语法
objectName=newobjectType(param1[,param2]...[,paramN])
参数
objectName
新对象实例的名称。
objectType
对象类型。
它必须是一个定义对象类型的函数。
param1...paramN
对象的属性值。
这些属性是objectType函数的参数。
描述
创建一个用户自定义对象需要两个步骤:
1.写一个函数定义一种对象类型。
2.用new创建一个该对象的实例。
要定义一个对象类型,需要为该对象创建一个指定名称、属性和方法的函数。
一个对象的属性可以是其它类型的对象。
请参看下面的例子。
你总可以向已经定义的对象中添加属性。
例如,car1.color="black"将给car1添加一个叫color的属性,并给其赋值“black”。
不过这对其它任何对象并没有什么作用。
要给同一类型的所有对象都添加一个新的属性,你必须向car对象类型的定义中添加属性。
你可以使用Function.prototype属性向先前定义的对象类型中添加属性。
这将定义一个被所有由该函数创建的对象共享的属性,而不只是一个对象类型实例才有。
下面的代码将为所有car类型的对象添加一个color属性,然后将对象car1的color属性赋值。
更多信息,请参看prototype。
Car.prototype.color=null
car1.color="black"
示例
示例1:
对象类型和对象实例。
假设你想要创建一个汽车使用的对象类型。
你想要这种对象类型叫做car,有属性make,model,和year。
要完成这么多事情,你需要编写如下的函数:
functioncar(make,model,year){
this.make=make
this.model=model
this.year=year
}
现在你就可以用下面的方法创建一个叫做mycar的对象了:
mycar=newcar("Eagle","TalonTSi",1993)
该语句创建了mycar并将其属性赋了指定的值。
也就是说,mycar.make的值是字符串“Eagle”,mycar.year是整型数1993,等等。
使用new你可以创建任意多个car对象。
如,
kenscar=newcar("Nissan","300ZX",1992)示例2:
对象属性就是另外一个对象。
假设你按照下面代码定义了一个叫做person的对象类型:
functionperson(name,age,sex){
this.name=name
this.age=age
this.sex=sex
}
然后创建了两个新的person实例:
rand=newperson("RandMcNally",33,"M")
ken=newperson("KenJones",39,"M")
现在你可以重写car的定义,以便包含一个person对象作为owner属性表明车主:
functioncar(make,model,year,owner){
this.make=make;
this.model=model;
this.year=year;
this.owner=owner;
}
要创建一个新对象的实例,你可以使用下面的代码:
car1=newcar("Eagle","TalonTSi",1993,rand);
car2=newcar("Nissan","300ZX",1992,ken)
请注意,我们在创建对象的时候并没有给出一个常量字符串或者一个整型值,而是传递了对象kand和ken作为owner的参数。
要找出car2车主的名字的方法是:
car2.owner.name
this
该关键字用于引用当前对象,通常情况下,方法中的this指调用它的对象。
实现版本
Navigator2.0
语法
this[.propertyName]
示例
假定有一个叫做validate的函数可以校验对象的value属性,如果给出对象值的上下限的话:
functionvalidate(obj,lowval,hival){
if((obj.valuehival))
alert("无效数据e!
")
}
你可以在每个窗体元素的onChange事件句柄中调用validate,只用下面的格式传递this作为参数就行了:
请输入18到99之间的数值:
onChange="validate(this,18,99)">
typeof
typeof操作符用法格式如下:
1.typeofoperand
2.typeof(operand)
typeof操作符将返回一个字符串,表明未计算的operand操作数是什么类型的。
operand是一个要返回类型的字符串变量、关键字或者对象。
圆括号可选。
实现版本
Navigator3.0
假设你定义了下面的变量:
varmyFun=newFunction("5+2")
varshape="round"
varsize=1
vartoday=newDate()
typeof操作符将返回下面的值:
typeofmyFunisobject
typeofshapeisstring
typeofsizeisnumber
typeoftodayisobject
typeofdontExistisundefined
对于关键字true和null,typeof操作符返回下面的结果:
typeoftrueisboolean
typeofnullisobject
对于数值或字符串,typeof操作符返回下面的结果:
typeof62isnumber
typeof'Helloworld'isstring
对于属性值,typeof操作符返回属性所含值的类型:
typeofdocument.lastModifiedisstring
typeofwindow.lengthisnumber
typeofMath.L