1. 程式人生 > 其它 >web前端中js詳解第二篇

web前端中js詳解第二篇

Js(二)

1.操作符

由於下面的內容和python相似,所以只挑重要的詳細說一下

算術運算

定義方式除了var以外還有一種方式let,這種方式更為嚴格,如果var聲明瞭相同的變數,則後面賦的值會把前面賦的值覆蓋掉,而let相同的變數只能定義一次,否則會報錯。

一次性定義多個值:

var a=1,b=2,c="3";

一開始不給賦值,後面再賦值也行

var a,b,c;
a=1
b=2
c="3"
//%:求餘數
//當不是數字的運算時,"+"一旦有string型別就是拼接,最終結果為字串
//而 - / % * 則是自動隱式轉換為數字去計算

如果無法隱式轉換成數字,就會輸出'NaN'

<script>
var a = 'c';
var b = 8;
</script>

賦值運算子

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <script>
       // var a = 8;
       // a += 1; //a=a+1
       // console.log(a)

       // var a = 8;
       // var b = a++;
       // console.log(a,b)
       // //得到的是9和8而不是8和9,因為這時候分兩步,第一步: b=a 第二步:a=a+1
       // //++在後面是先賦值,再加一,++在後面是先加一,後復賦值
       // var c = 1;
       // var d = ++c;
       // console.log(c,d)
   </script>
</body>
</html>

比較運算子

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <script>
       var a = '8';
       var b = 8;
       if(a === b){
           alert('hello')
      }else {
           alert('python')
      }
       //上面輸出python
       //全等於時不但資料要一樣,而且型別也要一樣
       //如果是"=="的話就只比值,不比對型別。
   </script>
</body>
</html>

邏輯運算子

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <script>
       //&& 與 兩邊都為真結果才為真,其他都是假
       //|| 或 兩邊都為假結果才為假,其他都是真
       //! 非 取反,真變假,假變真
       //當兩邊不一定是布林值時
       //&& 遇到假就停 不會進行資料轉換
       //|| 遇到真就停 不會進行資料轉換
       //! 隱式型別轉換,將後面的資料先轉換為布林值在取反
       var a = true && true && false   //輸出為假
       var b = 0 || 0 || 2     //輸出為2
       var c = 2 && -1 && ''   //輸出為空
       var d = 0 && null       //輸出為0,因為第一個條件就不符合了
       //先判斷2 && -1發現為真,然後往下判斷-1 && ''發現為假,然後輸出空
       //"或"是一直判斷下去,直到有真才輸出真的值
       //"與"是一直判斷下去,直到有假才輸出假的值
       //邏輯運算子不是判斷值是否相等的,只判斷是不是為真
   </script>
</body>
</html>

以下在進行判斷時為假:

1.0

2.null

3.undefined

4.NaN

5.''(空字串)

6.false

2.控制流程

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <script>
       var a = 0;
       // if (a >= 0){
       //     alert("真")
       // }else {
       //     alert("假")
       // }
       // 三目運算:條件? 真語句: 假語句
       // a>=0? alert("真"):alert("假")

       // var x = 8;
       // if (x>50){
       //     alert('x>50')
       // }else if(x>30){
       //     alert('x>30')
       // }else if(x>=10){
       //     alert('x>=10')
       // }else {
       //     alert("hello world")
       // }
       
       //switch速度會比if快一些
       var day = 3
       switch (day){
           case 1:
               document.write("1")
               //document.write()是寫在終端(網頁)內,不寫在控制器內
               //console.log()是寫在控制器內
               break
           case 2:
               document.write("2")
               break
           case 3:
               document.write("3")
               break
           case 4:
               document.write("4")
               break
      }
   </script>
</body>
</html>

3.迴圈

for迴圈

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
<script>
   //迴圈長這樣:
   // for(條件){
   //     執行語句
   // }
   //如果外面沒有定義變數,for內也可以定義
   //和c語言的for迴圈有一定的類似性
   for (var i=1; i<=9; i++){
       for (var j=1;j<=i ;j++){
           var b = i*j
           document.write(i+"*"+j+"="+b+'&emsp;')//拼接
      }
       document.write("<br>")
  }
</script>
</body>
</html>

迴圈例項

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <style>
       *{
           padding: 0;
           margin: 0;
      }
       li{
           width: 100px;
           height: 100px;
           background: red;
           margin: 10px;
      }
   </style>
</head>
<body>
<ul>
   <li>0</li>
   <li>1</li>
   <li>2</li>
   <li>3</li>
   <li>4</li>
</ul>
<script>
   //點選哪個就彈窗出來對應的數字,可以重複點選,此方法使用迴圈
   var aLi =  document.getElementsByTagName('li');
   var len = aLi.length;
   for (var i = 0; i<len; i++){
       aLi[i].wwwww = i      //儲存值
       aLi[i].onclick = function () {
           alert(this.wwwww)
      }
  }
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <style>
       *{
           padding: 0;
           margin: 0;
      }
       li{
           width: 100px;
           height: 100px;
           background: red;
           margin: 10px;
      }
   </style>
</head>
<body>
<ul>
   <li>0</li>
   <li>1</li>
   <li>2</li>
   <li>3</li>
   <li>4</li>
</ul>
<script>
   //點選哪個就彈窗出來對應的數字,不用迴圈的方法,但是如果事件多的話就不合適了
   var aLi =  document.getElementsByTagName('li');
   aLi[0].onclick = function (){
       alert(0)
  }
   aLi[1].onclick = function (){
       alert(1)
  }
   aLi[2].onclick = function (){
       alert(2)
  }
   aLi[3].onclick = function (){
       alert(3)
  }
   aLi[4].onclick = function (){
       alert(4)
  }
</script>
</body>
</html>

while迴圈

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>

</head>
<body>
   <script>
       var i=0
       while (i<10){
           console.log(i)
           i++
      }
   </script>
</body>
</html>

do while迴圈

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>

</head>
<body>
   <script>
       var i=0
       do{
           console.log(i);
           i++;
      }
       while (i<10)
   </script>
</body>
</html>

4.字串方法

string 字串
         索引,下標,偏移量---從0開始
         str[index];通過索引取字串
         str.length;獲取長度 空格也算
         value.toString();--轉換字串
         str.substring();--擷取字串會比較引數值的大小,小的引數在前面,負數變為0
         str.slice()--切片,不會交換位置,負數從右到左數
         str.split()--字串切割,返回陣列
         str.indexOf --查詢字串,成功返回索引,反之返回-1 ===>相當於python中的find
         str.toUppweCase()--全部轉換大寫
         str.toLowerCase()--全部轉換小寫
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
<script>
       var str="wo shi shui";
       console.log(str.length);
       console.log(str[3]);

       //執行以下兩行程式碼輸出的東西不變,所以可以發現string方法不能改變值
       //string型別不可變
       str[0] = "Q";
       console.log(str);

       //將其他型別的資料轉化為字串
       var a = 8;
       alert(typeof a.toString())

       //substring遵循左閉右開原則
       var str1 = "wo shi shui wo zai na";
       //擷取字串會自動比較引數值的大小,小的引數在前面,大的引數在前面,這點和python不一樣
       //下面兩行程式碼輸出結果一樣
       console.log(str1.substring(3,9));
       console.log(str1.substring(9,3));
       //負數變為0 ===>(0, 9)
       console.log(str1.substring(-3,9));

       //slice遵循左閉右開原則
       console.log(str1.slice(3,9));
       console.log(str1.slice(9,3));  //輸出為空,python也是為空,所以不能倒著寫
       console.log(str1.slice(-5,-1));


       console.log(str1.split('i'));
       alert(str1.indexOf('h',5))//這裡的數字意思是從幾號位置開始找
</script>
</body>
</html>

5.陣列(列表)方法

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <script>
       var arr =["april",'班長','有你','大當家','七葉'];

       //索引取值
       console.log(arr[3]);

       //賦值(改變值)
       arr[4] = "憂遊";
       console.log(arr);
       //如果一共5個數據,你修改第八個,也就是跳過一些位置會輸出:
       //['april', '班長', '有你', '大當家', '七葉', 空 ã3, '憂遊']

       //新增
       arr.push("思雨",'三月')  //可以新增多個
       arr.unshift("眠",'鯊魚')

       //刪除,不能指定,括號裡不能填數字
       console.log(arr.pop())
       console.log(arr.shift())

       //指定刪除
       console.log(arr.splice(3)); //保留前三個,剩下全部刪除,如果裡面的數字大於總數則一個都不會刪除
       console.log(arr.splice(2,2));  //從2號位置開始刪除2個,但是不包含2號元素
       console.log(arr.splice(1,2,"哈哈"));//從1號位置開始刪除兩個,然後再加上’哈哈‘,不刪除只新增的話就把2改為0

       // 另一種定義陣列方式
       var arr11 = Array();  //定義空陣列
       arr11[0] = 'qqq';   //給空陣列新增值,陣列沒有互異性或者去重功能,所以值可以重複

       //排序
       var arr2 = [1,5,3,6,3,2,2,8,9]
       var arr3 = arr2.sort()
       var arr12 = arr2.sort().reverse() //逆序

       //拼接
       var arr5 = ["思",'月']
       var q = arr5.join("和")
       console.log(q)
       
       //多拼接
       var arr1 = [1,2,3]
       var arr4 = [4,5,6]
       var arr7 = [7,8,9]
       //如果直接用"+"拼接則arr1,arr4,arr7之間沒有逗號,最後出來的是字串不是陣列
       var arr6 = arr1.concat(arr4).concat(arr7)
       console.log(arr4)
   </script>
</body>
</html>

6.數字方法

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <script>
       //轉化為數字(number)型別
       var a = '888';
       console.log(typeof Number(a))
       var b = 'aa';
       console.log(typeof Number(b));

       //下面這一串程式碼會隨機得到0-1之間的一個浮點數
       console.log(Math.random())

       //可以這麼寫,出來的就是他輸入的倍數:
       console.log(Math.random()*100)

       //只取整數部分
       console.log(Math.floor(Math.random()*100))

       //保留兩位小數
       console.log(Math.random().toFixed(2))

       //轉化為數字型別,遇到不是數字的就會停,
       var c = '88afevafw123debr';
       console.log(typeof parseInt(c))
       //parseFloat()可以使小數部分轉化為數字型別,遇到不是數字的就停,並輸出已轉化的
       //parseFloat()是從整數部分直到小數都轉化,如果整數部分有不是數字的東西也立馬就停了,輪不到小數部分
       var d = '1325ww6.124353'
       console.log(parseFloat(d))
   </script>
</body>
</html>