第三章:表达式与运算符


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>