js基本语法——运算符
关系运算符
- == 等于
- > 大于
- < 小于
- >= 大于等于
- <= 小于等于
- != 不等于
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>
逻辑运算符
用于判断逻辑关系的运算符- && 与
- || 或
- ! 非
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为91if(a>b && ++a>345){window.alert('ok');}else{window.alert('no');}window.alert("a="+a);//如果是下面的情况,最后a为90var 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++等)里的都一样
- 逻辑与&&
if(逻辑表达式1 && 逻辑表达式2){}
如果 逻辑表达式1 为true 则js引擎会继续执行逻辑表达式2
如果 逻辑表达式1 为false 则不会执行逻辑表达式2
- 逻辑或||
if(逻辑表达式1 || 逻辑表达式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>
二进制——原码、反码、补码
基本概念:网上对原码、反码、补码的解释过于复杂,这里精简几句话。
对于有符号的而言:
- 二进制的最高位是符号位:0表示正数,1表示负数
- 正数的原码、反码、补码都一样
- 负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)
- 负数的补码=它的反码+1
- 0的反码,补码都是0
- javascript没有无符号数,换言之,javascript中的数都是有符号的
- 在计算机运算的时候,都是以补码的方式来运算的
反码 11111111 11111011
补码 11111111 11111100
-4>>2 把最后的两个0移走,然后面前用11补上
即是 11111111 11111111
转成 反码 11111111 11111110 //减一
原码 10000000 00000001 //符号位不变,全部取反
既是 -1
所以有下面的结果:
var a=4>>2; 结果是1
var a=4>>2; 结果是1
var b=-4>>2; 结果是-1
<html><head><script language="javascript">var a=4>>2;window.alert(a); //显示1var a=-4>>2;window.alert(a); //显示-1</script></head><body></body></html>
本文深入解析JavaScript中的运算符,包括关系运算符、逻辑运算符及其使用方法,通过实例演示如何进行数值比较、判断逻辑条件,以及二进制原码、反码、补码的基本概念。此外,还介绍了JavaScript中特殊的比较行为和逻辑运算符的短路特性。

被折叠的 条评论
为什么被折叠?



