js基本语法――运算符
关系运算符
①== 等于 ②> 大于 ③< 小于 ④>= 大于等于 ⑤<= 小于等于 ⑥!= 不等于
请大家看个案例,请问输出什么;
var a=90;
var b=90;
if(a==b){
alert("ok1");
}
b--;
if(a>b){
alert("ok2");
}
if(a>=b){
alert("ok3");
}
特别说明:
一个数和一个字符串比较有什么结果,即两个类型不一样的比较
a==b 究竟是在比较什么
例如下面:
并没有转成ASCII,而是先转成整数来用,例如a的ASCII值为97,但是 var a=97; var b='97';依然是no,自己测试
在实际的开发中要避免如此,如果别人问你是转成ASCII还是实际的数,进行比较,你应该清楚了。
========
var a=90;
var b="90";
if(a==b){
window.alert('ok'); //ok
}else{
window.alert('no');
}
demo1.html
<html> <head> <script language="javascript"> var a=90; var b=90; if(a==b){ window.alert('ok'); //ok } //不同类型的判断 var b="abc"; if(a==b){ window.alert('ok'); }else{ window.alert('no');// no } var b="90"; if(a==b){ window.alert('ok'); //ok }else{ window.alert('no'); } var a=97; var b="a"; if(a==b){ window.alert('ok'); }else{ window.alert('no'); //no } </script> </head> <body></body> </html>
介绍两个函数:window.prompt和document.writeln()
demo2.html
<html> <head> <script language="javascript"> var val1=window.prompt("请输入值"); var val2=window.prompt("请再输入值"); document.writeln("你的输入是"+(parseFloat (val1)+parseFloat (val2))); </script> </head> <body></body> </html>
案例:编写一个程序,该程序可以接收两个数(可以是整数,也可是小数),并判读这两个数是大于,小于,还是等于?
demo3.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>
逻辑运算符
用于判断逻辑关系的运算符
①&& 与 ②|| 或 ③ ! 非
请大家看个案列,请问输出什么?
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
关于&&短路的问题,看demo4.html的代码
和 ++的问题,是先判断再加加;还是先加加再判断
demo4.html
<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>
逻辑与&& 注意:if(逻辑表达式1 && 逻辑表达式2){
}
如果 逻辑表达式1 为true 则js引擎会继续执行逻辑表达式2
如果 逻辑表达式1 为false 则不会执行逻辑表达式2
逻辑或||
if(逻辑表达式1||逻辑表达式2||……){
}
只要有一个逻辑表达式为true,整个就为true
如果逻辑表达式1为真,那么逻辑表达式2就不判断了(不再执行)
如果逻辑表达式1为假,则逻辑表达式2执行
特别强调:在js中,||究竟返回什么
★★★结论:|| 将返回第一个不为false那个值(对象亦可),或者是返回最后一个值(如果全部都是false的话)
不要把它理解为布尔值,甚至返回对象
返回的结果,不一定是布尔值
demo5.html
<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>
位预算和移位运算 这个相对比较麻烦,是面试中经常最经典的考题。
js也有位运算和移位运算,其规范和java一致。
二进制――原码、反码、补码
基本概念:
网上对原码、反码、补码的解释过于复杂,这里精简几句话。
对于有符号的而言:
(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; // 4 二进制 00000100 ----> 00000001 window.alert(a); //显示1 var a=-4>>2; window.alert(a); //显示-1 </script> </head> <body></body> </html>
韩顺平_php从入门到精通_视频教程_学习笔记_源代码图解_PPT文档整理_目录