表 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
简化计算
由于逻辑表达式是从左到右计算的,计算机自然不会傻到真的将全部表达式都计算一遍,它会试着偷偷懒,想办法按照下面的规则“简化”计算:
- false && 任何值 都会被简化为 false。
- true || 任何值 都会被简化计算为 true。
逻辑运算的简化原则是保证逻辑运算本身总是正确的。请注意,如果使用了简化规则,那么被简化掉的表达式就不会进行计算,所以也就不会产生它应该起的作用。
字符串操作符
除了比较操作符,可应用于字符串值的操作符还有连接操作符(+),它会将两个字符串连接在一起,并返回连接的结果。例如,“my ” +“string”将返回字符串“my string”。
组合赋值操作符 += 也可用于连接字符串。例如,如果变量 mystring 的值为“alpha”,表达式 mystring += "bet" 将计算出“alphabet”并将其赋给 mystring。
特殊操作符
?: (条件操作符)
条件操作符是 JavaScript 所有操作符之中唯一需要三个操作数的。该操作符通常用于取代简单的 if 语句。
语法
condition ? expr1 : expr2
参数
| condition |
计算结果为 true 或 false 的表达式 |
| expr1, expr2 |
任意类型值的表达式。 |
描述
如果 condition 为真的话,该操作符将返回 expr1 的值;否则返回 expr2 的值。例如,要根据 isMember 变量的值显示不同的信息,可以使用此语句:
document.write ("收费为 " + (isMember ? "$2.00" : "$10.00"))
, (逗号操作符)
逗号操作符非常简单。它会依次计算两个操作数并返回第二个操作数的值。
语法
expr1, expr2
参数
描述
你可以在你想要在只能填入一个表达式的地方写入多个表达式时使用逗号操作符。该操作符最常见的用途是在 for 语句中使用多个变量作为循环变量。
例如,如果 a 是一个 10x10 的二维数组,下面的代码将使用逗号操作符一次自增两个变量。结果是打印出该数组副对角线上的元素:
for (var i=0, j=10; i <= 10; i++, j--)
document.writeln("a["+i+","+j+"]= " + a[i,j])
delete
删除一个对象的属性或者数组中特定位置的元素。
语法
delete objectName.property
delete objectName[index]
delete property
参数
| objectName |
对象的名称。 |
| 属性 |
已有的属性。 |
| index |
一个整型数值,表明了要删除的元素在数组处的位置。 |
描述
第三种格式只在 with 语句中合法。
如果删除成功,delete 操作符将把属性或元素设为 undefined(未定义)。delete 总是返回 undefined。
new
该操作符用于创建用户自定义对象类型或者拥有构造函数的内建对象类型的实例。
语法
objectName = new objectType (param1 [,param2] ...[,paramN])
参数
| objectName |
新对象实例的名称。 |
| objectType |
对象类型。它必须是一个定义对象类型的函数。 |
| param1...paramN |
对象的属性值。这些属性是 objectType 函数的参数。 |
描述
创建一个用户自定义对象需要两个步骤:
- 写一个函数定义一种对象类型。
- 用 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。要完成这么多事情,你需要编写如下的函数:
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
this
该关键字用于引用当前对象,通常情况下,方法中的 this 指调用它的对象。
语法
this[.propertyName]
示例
假定有一个叫做 validate 的函数可以校验对象的 value 属性,如果给出对象值的上下限的话:
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)">
typeof
typeof 操作符用法格式如下:
1. typeof operand
2. typeof (operand)
typeof 操作符将返回一个字符串,表明未计算的 operand 操作数是什么类型的。operand 是一个要返回类型的字符串变量、关键字或者对象。圆括号可选。
假设你定义了下面的变量:
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
void
void 操作符用法格式如下:
1. javascript:void (expression)
2. javascript:void expression
void 操作符指定要计算一个表达式但是不返回值。expression 是一个要计算的 JavaScript 标准的表达式。表达式外侧的圆括号是可选的,但是写上去是一个好习惯。
你可以使用 void 操作符指定超级链接。表达式会被计算但是不会在当前文档处装入任何内容。
下面的代码创建了一个超级链接,当用户点击以后不会发生任何事。当用户点击链接时,void(0) 计算为 0,但在 JavaScript 上没有任何效果。
<A HREF="javascript:void(0)">单击此处什么也不会发生</A>
下面的代码创建了一个超级链接,用户单击时会提交表单。
<A HREF="javascript:void(document.form.submit())">
单击此处提交表单</A>
移位操作符需要两个操作数:第一个是要进行移位的数值,第二个指定要对第一个数移位的数目。移位的方向由使用的操作符决定。 从原理上讲,位逻辑操作符的工作流程是这样的:
更多的Javascript操作符应用详细讲解请到论坛查看: http://BBS.TC711.COM
【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】
来源:
互联网
日期:2008-12-26