韩顺平_轻松搞定网页设计(html+css+javascript)_第21讲_js运算符2_js移位运算_学习笔记_源代码图解_PPT文档整理

文西马龙:http://blog.csdn.net/wenximalong/

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文档整理_目录

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值