第三章:表达式与运算符
1.在使用除法运算符进行除法运算时如果除数是0(如2/0),得到结果为Infinity;如果是0/0,得到结果为NaN;
2.如果操作数为非数字型数据,并且该操作数不能转换为数字型数据,将返回NaN;
3.如果正号运算符的操作数是一个字符串型的数据,正号运算符可以将其转换为数字型的数据,如果该操作数是一个不能转换为数字型的数据,将返回NaN.
4.等同运算符(===)与相等运算符(==)在表示上的区别,相等运算符是由两个等号构成,而等同运算符是由3个等号构成,等同运算符只有在两个操作数类型相同,并且值也相同的情况下才会返回true。
5.相等运算符(= =)
如果一个操作数的值为undefined,另一个操作数的值为null,则返回true.
‚如果一个操作数是对象,另一个操作数是数字或字符串,则使用valueOf()或toString()将对象转换为原始类型的值之后,在进行比较。
5.等同运算符(= = =)
NaN不会与任何值等同。
6.小于运算符(<) 如果一个操作数是NaN,则比较结果为false
7.in运算符。In运算符是一个二元运算符,对运算符左右两个操作数的要求比较严格,in运算符要求第一个(左边的)操作数必须是字符串类型或者可以转化为字符串类型的其他类型,而第2个(右边的)操作数必须是数组或对象,只有第1个操作数的值是第2个操作数的属性名,才会返回true,否则返回false.
对于对象而言,in运算符比较的是对象的属性名。对于数组而言,in运算符比较的是数组的下标。
<script type="text/javascript">
// 定义一个box对象
var box={box_length:200,box_width:100};
// 定义一个数组
var arr=["box_length",200,"200"];
var x="box_length";
var y=2;
//对于对象而言,in运算符比较的是对象的属性名
if(x in box){
document.write("变量x包含在对象box之中<br>");
}
else{
document.write("变量x不包含在对象box之中<br>");
}
if(y in box){
document.write("变量y包含在对象box之中<br>");
}
else{
document.write("变量y不包含在对象box之中<br>");
}
//对于数组而言,in运算符比较的是数组的下标。
if(x in arr){
document.write("变量x包含在数组arr之中<br>");
}
else{
document.write("变量x不包含在数组arr之中<br>");
}
if(y in arr){
document.write("变量y包含在数组arr之中<br>");
}
else{
document.write("变量y不包含在数组arr之中<br>");
}
</script>
5.instanceof运算符,用来判断对象与对象实例之间关系的运算符,或者说是判断对象是否属于某个构造函数定义的,这也是一个二元运算符,该运算符要求第1个操作数是一个对象或数组的名称,而第2个操作数是对象类的名字,如果第1个操作数是第2个操作数的实例,instanceof运算符将会返回true,否则返回false.
<script type="text/javascript">
var myDate=new Date();
var arr=["box_length",200,"200"];
if(myDate instanceof Date){
document.write("myDate是Date类的实例<br>");
}
else{
document.write("myDate不是Date类的实例<br>");
}
if(myDate instanceof Object){
document.write("myDate是Object类的实例<br>");
}
else{
document.write("myDate不是Object类的实例<br>");
}
if(myDate instanceof Number){
document.write("myDate是Number类的实例<br>");
}
else{
document.write("myDate不是Number类的实例<br>");
}
if(arr instanceof Array){
document.write("arr是Array类的实例<br>");
}
else{
document.write("arr不是Array类的实例<br>");
}
if(arr instanceof Object){
document.write("arr是Object类的实例<br>");
}
else{
document.write("arr不是Object类的实例<br>");
}
</script>
5.所有的对象都是Object类的实例。
6.逐位与运算符(&),逐位或运算符(|),逐位异或运算符(^),逐位非运算符(~),左移运算符(<<),右移运算符(>>),用0补足的右移运算符(>>>),条件运算符(x?Y:Z),new运算符.
7.void运算符,void运算符可以用在任何类型的操作数之前,void运算符可以让操作数进行运算,但是却舍弃运算之后的结果
<script type="text/javascript">
var a=1;
var b=2;
document.write("a+b="+(a+b)+"<br>");
document.write("void(a+b)="+void(a+b)+"<br>");
</script>
<a href="javascript:void window.open()">打开一个新的窗口含void</a>
<a href="javascript:window.open()">打开一个新的窗口</a>
5.typeof运算符,该操作数可以是一个任何类型的操作,typeof运算符可以返回一个字符串,该字符串说明操作数是什么类型。
<script type="text/javascript">
var x=12;
var a="x大于10";
var b=true;
var c=null;
var now=new Date();
var arr=["1",true];
function myalert(){
alert("警告");
}
document.write(typeof x+"<br>");
document.write(typeof a+"<br>");
document.write(typeof (b)+"<br>");
document.write(typeof (c)+"<br>");
document.write(typeof (now)+"<br>");
document.write(typeof (arr)+"<br>");
document.write(typeof (myalert)+"<br>");
</script>
5.delete运算符,可以用来删除变量,对象的属性,数组中的元素,delete运算符返回的是布尔值,删除成功返回true.
并不是所有的属性和变量都可是删除,某些对象的内部核心属性和客户端属性是不能删除的
‚使用var定义的变量,对象和数组是不能删除的
ƒ如果删除对象中不存在的属性,则会返回true
④删除未定义的变量则会返回true.
<script type="text/javascript">
myObject=new Object();
myObject={a:"myObject对象a属性的值",b:"myObject对象b属性的值"};
var a="使用var定义的变量";
b="没有使用var定义的变量";
var arr=["数组元素1","数组元素2"];
document.write(myObject.a+"<br>");
document.write(myObject.b+"<br>");
delete myObject.b;
document.write(myObject.b+"<br>");
document.write(delete myObject.c+"<br>");
delete myObject;
document.write(typeof (myObject)+"<br>");
document.write(a+"<br>");
document.write(delete a+"<br>");
document.write(b+"<br>");
document.write(delete b+"<br>");
document.write(typeof (b)+"<br>");
document.write(arr[0]+"<br>");
delete arr[0];
document.write(arr[0]);
document.write(delete d);
</script>