韓順平 javascript教學視頻_學習筆記4_js運算符2_js移位運算

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++等)裏的都一樣


  • 邏輯與&&
 
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>

二進制——原碼、反碼、補碼

基本概念:
網上對原碼、反碼、補碼的解釋過於複雜,這裏精簡幾句話。
對於有符號的而言:
  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>





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章