第三章:表达式与运算符
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>