韓順平_輕鬆搞定網頁設計(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文檔整理_目錄

發佈了55 篇原創文章 · 獲贊 8 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章