js基本语法——运算符

关系运算符

  1. == 等于 
  2. > 大于 
  3. < 小于 
  4. >= 大于等于 
  5. <= 小于等于 
  6. != 不等于
var a=90;
   
   var b=90;
   
   if(a==b){
   
      alert("ok1");
   
   }
   
   b--;
   
   if(a>b){
   
      alert("ok2");
   
   }
   
   if(a>=b){
   
      alert("ok3");
   
   }


特别说明:



一个数和一个字符串比较有什么结果,即两个类型不一样的比较



例如:

var a=9;
    
    var b=‘9’;
    
    if(a==b){


window.alert('ok'); //ok

}else{
    
       window.alert('no');
    
    }

当比较 a 和 b 时,并没有将 b 先转换为 ASCII 码 再与 a 进行 比较,而是直接将 b 转化为一个数(即相当于 parseInt(b) )来进行比较



自己可以根据下面的代码来测试一下


<html>  
    
    	<head>  
    
    		<script language="javascript">  
    
    			var a=9;  
    
    			var b=9;  
    
    			if(a==b){  
    
    				window.alert('ok'); //ok  
    
    			}  
    
    			
    
    			var a=9;
    
                var b='9';  
    
    			if(a==b){  
    
    				window.alert('ok');  
    
    			}else{  
    
    				window.alert('no');
    
    			}  
    
      
    
    			var a=9;
    
                var b="abc";  
    
    			if(a==b){  
    
    				window.alert('ok');
    
    			}else{  
    
    				window.alert('no');  
    
    			}  
    
      
    
    			var a=97;  
    
    			var b="a";  
    
    			if(a==b){  
    
    				window.alert('ok');  
    
    			}else{  
    
    				window.alert('no');
    
    			}  
    
    		</script>  
    
    	</head>  
    
    	<body></body>  
    
    </html>   





介绍两个函数:window.prompt() 和 document.writeln()


prompt() 方法用于显示可提示用户进行输入的对话框。

语法

prompt(text,defaultText)参数 text 可选。表示要在对话框中显示的纯文本(而不是 HTML 格式的文本)。

参数defaultText 可选。表示默认的输入文本。

 


write() 方法可向文档写入 HTML 表达式或 JavaScript 代码。

可列出多个参数(exp1,exp2,exp3,...) ,它们将按顺序被追加到文档中。


writeln() 方法与 write() 方法作用相同,外加可在每个表达式后写一个换行符。



<html>  
    
    	<head>  
    
    		<script language="javascript">  
    
    			var val1=window.prompt("请输入值","65");  
    
    			var val2=window.prompt("请再输入值");  
    
    			
    
    			document.writeln("你的输入是"+(parseFloat (val1)+parseFloat (val2)));  
    
      
    
    		</script>  
    
    	</head>  
    
    	<body></body>  
    
    </html>  



编写一个程序,该程序可以接收两个数(可以是整数,也可是小数),并判读这两个数是大于,小于,还是等于?


<html>  
    
    	<head>  
    
    		<script language="javascript">  
    
    			/*请编写一个程序,该程序可以接收两个数(可以是整数,也可是小数),并判读两个数是大于?小于?还是等于?*/  
    
    			var num1=window.prompt("请输入第一个数");  
    
    			var num2=window.prompt("请输入第二个数");  
    
    			num1=parseFloat(num1);  
    
    			num2=parseFloat(num2);  
    
      
    
    			if(num1>num2){  
    
    				window.alert("num1>num2");  
    
    			}else if(num1<num2){  
    
    				window.alert("num1<num2");  
    
    			}else{  
    
    				window.alert("num1=num2");  
    
    			}  
    
    		</script>  
    
    	</head>  
    
    	<body></body>  
    
    </html>  


逻辑运算符

用于判断逻辑关系的运算符


  1. &&  与 
  2. ||      或 
  3. !      非


var a=90;
    
    var b=90;
    
    if(a==b||a>8){
    
       window.alert("ok1");
    
    }
    
    b--;
    
    if(a>b && a>45){
    
       window.alert("ok2");
    
    }
    
    if(!(a<=b)){
    
       window.alert("ok3");
    
    }




在逻辑运算中,0、" "、false、null、undefined、NaN 均表示 false



下面的代码好好看看

<html>  
    
    	<head>  
    
    		<script language="javascript">  
    
    		
    
    			var a=90;  
    
    			var b=9;  
    
    			if(a>b && a>345){  
    
    				window.alert('ok');  
    
    			}else{  
    
    				window.alert('no');  
    
    			}  
    
      
    
    			//如果是下面的情况,最后a为91  
    
    			if(a>b && ++a>345){  
    
    				window.alert('ok');  
    
    			}else{  
    
    				window.alert('no');  
    
    			}  
    
    			window.alert("a="+a);  
    
    			
    
    			//如果是下面的情况,最后a为90  
    
    			var a=90;  
    
    			var b=9;  
    
    			// a<b不成立,因为是&&,直接就短路了,不再执行&&后面的语句了,
    
    			//直接就window.alert("no"); 上面的在a>b成立的情况下,才去执行&&后面的语句。  
    
    			if(a<b && ++a>345){  
    
    				window.alert('ok');  
    
    			}else{  
    
    				window.alert('no');  
    
    			}  
    
    			window.alert("a="+a);  
    
    			
    
    			//另外的情况  
    
    			var a=90;  
    
    			var b=9;  
    
    			//在 && 左半部分为真的情况下,然后a先 a>90,然后在a++,即是先判断,再加加  
    
    			if(a>b && a++>90){  
    
    				window.alert('ok90');  
    
    			}else{  
    
    				window.alert('no90');  
    
    			}  
    
    			window.alert("a="+a);  
    
    		</script>  
    
    	</head>  
    
    	<body></body>  
    
    </html>  


下面具体说一下上述代码中所说的短路,其实和其他语言(C,C++等)里的都一样



  • 逻辑与&&



 



}



如果 逻辑表达式1 为true 则js引擎会继续执行逻辑表达式2



如果 逻辑表达式1 为false 则不会执行逻辑表达式2



 



  • 逻辑或||





}



只要有一个逻辑表达式为true,整个就为true



如果逻辑表达式1为真,那么逻辑表达式2就不判断了(不再执行)



如果逻辑表达式1为假,则逻辑表达式2执行



特别强调:



在js中,|| 究竟返回什么?



结论:  || 将返回第一个不为false那个值(对象亦可),或者是返回最后一个值(如果全部都是false的话)


不要把它理解为布尔值,它甚至可以返回对象,即返回的结果,不一定是布尔值



好好理解一下下面的代码


<html>  
    
    	<head>  
    
    		<script language="javascript">  
    
    			var a=true;  
    
    			var b=false;  
    
    			window.alert(a||b);  
    
    			//究竟返回什么  
    
    			// || 将返回第一个不为false那个值(对象亦可),或者是返回最后一个值(如果全部都是false的话)
    
    			
    
    			var a=4;  
    
    			var b=9;  
    
    			window.alert(a||b); //返回4  
    
    			//**********  
    
    			
    
    			var a=0;  
    
    			var b=9;  
    
    			window.alert(a||b); //返回9  
    
    			//**********  
    
    			
    
    			var a=0;  
    
    			var b="";  
    
    			var d=false;  
    
    			window.alert(a||b||d); //返回false  
    
    			//**********  
    
    			
    
    			//返回对象  
    
    			var a=0;  
    
    			var b="";  
    
    			var obj=new Object();  
    
    			var apple= a||b||obj;  
    
    			window.alert(typeof apple);  
    
      
    
    		</script>  
    
    	</head>  
    
    	<body></body>  
    
    </html>  



二进制——原码、反码、补码

基本概念:


网上对原码、反码、补码的解释过于复杂,这里精简几句话。


对于有符号的而言:


  1. 二进制的最高位是符号位:0表示正数,1表示负数
  2. 正数的原码、反码、补码都一样
  3. 负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)
  4. 负数的补码=它的反码+1
  5. 0的反码,补码都是0
  6. javascript没有无符号数,换言之,javascript中的数都是有符号的
  7. 在计算机运算的时候,都是以补码的方式来运算的

-4 的原码 10000000 00000100


     反码 11111111 11111011


     补码 11111111 11111100



-4>>2 把最后的两个0移走,然后面前用11补上
     即是      11111111 11111111
     转成 反码 11111111 11111110   //减一
     原码 10000000 00000001  //符号位不变,全部取反
     既是 -1



所以有下面的结果:
var a=4>>2; 结果是1

var b=-4>>2; 结果是-1

<html>  
    
        <head>  
    
            <script language="javascript">  
    
    		
    
                var a=4>>2;  
     
      
    
                window.alert(a);  //显示1  
    
    			
    
                var a=-4>>2;  
    
                window.alert(a);  //显示-1  
    
    			
    
            </script>  
    
        </head>  
    
        <body></body>  
    
    </html>