詳細的JavaScript基礎語法-上-簡單數據類型、運算符、流程控制、循環、數組、

JS簡介
JS與標記語言的區別

js是有邏輯性的、是有指令的、是主動的。
標記語言(html)不需要向計算機發出指令、標記語言的存在是用來被讀取的, 是被動的。

瀏覽器的執行

渲染引擎:用於解析html與css
ja引擎:又稱js解釋器、用於讀取網頁中的JS代碼

:瀏覽器本身並不會執行JS代碼,而是通過內置 JavaScript 引擎(解釋器) 來執行 JS 代碼 。JS 引擎執行代碼時逐行解釋每一句源碼(轉換爲機器語言),然後由計算機去執行,所以 JavaScript 語言歸爲腳本語言,會逐行解釋執行。

JS的組成:
ECMAScript、dom、bom

JS的輸出語句

alert(‘msg’) 彈出框
console.log() 控制檯打印
prompt(‘msg’) 彈出輸入框
js的變量

變量就是內存中用於存放數據的空間、
變量的使用: 聲明與賦值

age爲聲明、18爲賦值
var age = 18;

變量的規範
規則:

  • 由字母(A-Za-z)、數字(0-9)、下劃線(_)、美元符號( $ )組成,如:usrAge, num01, _name
  • 嚴格區分大小寫。var app; 和 var App; 是兩個變量
  • 不能 以數字開頭。 18age 是錯誤的
  • 不能 是關鍵字、保留字。例如:var、for、while
  • 變量名必須有意義。 MMD BBD nl → age
  • 遵守駝峯命名法。首字母小寫,後面單詞的首字母需要大寫。myFirstName

變量總結
變量是一個容器、用於存放數據、使用變量時一個要先聲明變量、然後賦值。變量的本質就是去內存中申請空間

js的數據類型

爲什麼需要數據類型?
爲了方便數據分成所需內存大小不同的數據、充分利用空間

javascript不用提前聲明變量的類型、在程序運行過程中、類型會被自動確定 (根據等於號右邊的值確定的)
js是弱類型的語言、數據類型是可變化的

簡單數據類型

簡單數據類型
Number

  • 不管整數還是小數都叫數字型
  • 8進制前面要加0
  • 用16進制要加0x
    16進制轉換圖
var num = 10;
var PI = 3.14;

// 數字前加0爲8進制
// 8進制轉化爲10進制/逢8進1
var num1 = 010;
console.log(num1);//8

// 16進制 0-9  a-f 0x表示16進制 逢16進1
//19的時候是25、20的時候就是32、因爲一個10是16、逢16進1
var num2 = 0x20;
console.log(num2);

// 數字類的最大值
console.log(Number.MAX_VALUE);
// 數字類的最小值
console.log(Number.MIN_VALUE);
//無窮大
console.log(Number.MAX_VALUE * 2);//表示無窮大、Infinity
// 無窮小
console.log(- Number.MAX_VALUE * 2);

// NaN非數值
console.log('PINK'-100);

boolean布爾型
布爾類型

isNaN
用於判斷是爲非數字的類型
非數字不是返回true、是數字返回false、
isNaN
string字符串類型

  • 字符串型可以是引號中的任意文本,
  • 其語法爲 雙引號 “” 和 單引號’’
  • 在js中推薦使用單引號
  • 推薦外單內雙
    引號用法

字符串轉義符

轉義符 解釋說明
\n 換行符,n 是 newline 的意思
\ \ 斜槓 \
\’ '單引號
\" "雙引號
\t tab 縮進
空格 ,b 是 blank 的意思

通過length獲取字符串的長度

   var strMsg = "我是帥氣多金的程序猿!";
        alert(strMsg.length); // 顯示 11
        // 字符串拼接

字符串拼接

    <script>
        // 1. 檢測獲取字符串的長度 length 
        var str = 'my name is andy';
        console.log(str.length); // 15
        // 2. 字符串的拼接 +  只要有字符串和其他類型相拼接 最終的結果是字符串類型
        console.log('沙漠' + '駱駝'); // 字符串的 沙漠駱駝
        console.log('小李' + 18); // '小李18'
        console.log('小李' + true); // 小李true
        console.log(12 + 12); // 24
        console.log('12' + 12); // '1212'
    </script>

總結:只要有字符串和其他類型相拼接、最終結果就是字符串類型

變量與字符串拼接

      // 變量與字符串相連
      var age=18;
      console.log('小明'+age+'歲');

boolean與Undefined和 Null

  • boolean true 算數運算中是1、false是0、
  • Undefined表示未定義的類型、沒有賦值

Undefined和數字相加是NaN、不是一個數字

  • null表示空的類型

獲取變量的數據類型typeof()
typeof 可用來檢測變量的數據類型

  var num =10;
    console.log(typeof(num));//Number
    var str ='pink';
    console.log(typeof str);//string
    var  flag =true;
    console.log(typeof(flag));
    var vair =undefined;
    console.log(typeof(vair));
    var timer =null;
    console.log(typeof(timer));

數據類型的轉換
轉化爲字符串類型

  • 更多使用加號拼接字符串轉換方式, 這一種方式也稱之爲隱式轉換。
    轉換爲字符類型

轉化爲數字類型(重要)

  • psrseInt()把string類型轉化爲整數、不會四捨五入(只要整數)
  • psrseFloat()把string類型轉化爲小數(浮點數)、(可以取小數)
  • 使用number()
  • 使用算數符號-(減號)、*(乘號)號來轉化
    在這裏插入圖片描述
  var age= prompt('請輸入你的年齡');
    //parseInt()轉化爲數值類型  但是保留的是整數
    console.log(parseInt(age));
    console.log(parseInt('3.14'));//只要整數
   //小數
    console.log(parseFloat('3.14'));//可以小數

    console.log('123'*1);//值爲數字型

轉化爲Boolean類型
boolean()把其他類型轉化爲Boolean類型
代表空與否定的值會被轉爲false、比如 ‘’、0、NaN、null、undefined這五種
其他值爲true
在這裏插入圖片描述


運算符(操作符)

算數運算符
+、-、*、/、%(取餘)
注意:不要直接用小數進行運算
浮點數的精度不如整數
算術運算符
遞增與遞減運算符號
必須與變量搭配使用

  • 前置遞增
    原理:先自增、在返回值 類似與n=n+1;
        var num = 1;
        num = num + 1;
        num = num + 1;
        console.log(num);//3
        //前置遞增運算符
        var age = 10;
        ++age;
        //類似於age=age+1
        console.log(age);//11

        var p = 10;
        //先自加、在返回值
        console.log(++p + 10);//21
  • 後置遞增
    原理:先返回原值、後自增 ;
  var num = 10;
        num++;//num=num+1
        console.log(num + 10);
        console.log(num);
        // 前置自增與後置自增如果單獨使用效果是一樣的
        //後置自增口訣:先返回原值、後自+1
        var num = 10;
        console.log(num++ + 10);//10+10
        console.log(num);//20

總結

  1. 單獨使用時運行結果相同、
  2. 與其他代碼使用時、執行結果不同、
  3. 後置:先返回原值、後自增
  4. 前置:先自增、在返回值
  5. 開發推薦用後置遞增/遞減 num++/num–

比較運算符(關係運算符)

  • 比較運算後,會返回一個布爾值(true / false)作爲比較運算的結果。
    比較運算符
    等於號的比較
    =號的比較
        //值相等就可以、這兒有隱式轉換
        console.log(18=='18');
        //===數據類型完全一致纔可以
        console.log(18==='18');
				比較運算符返回的一定是true或false

邏輯運算符
邏輯運算符一般用於多個條件的判斷

  • &&邏輯與and:
    ** 有一個結果爲false、其結果就爲false、兩側都是true結果纔是true
     var num = 7;
        var str = '我愛你`中國`';
        // 邏輯與:有一個結果爲false其結果就是false
        console.log(num > 5 && str.length >= num);//true
        console.log(num < 5 && str.length >= num);//false
        
  • ||邏輯或or:
    **有一個結果爲true、其結果就是true 、兩側都是false結果纔是false
        var num = 7;
        var str = '我愛你`中國`';
        //邏輯或:有一個結果爲true其結果就是true
        console.log(!(num < 10 || str.length >= 8));//false

        // 取反
        console.log(!(num>10));//true
  • !邏輯非not:
    ** 用於取反符、如:true的相反值是false;
        var num = 7;
        var str = '我愛你`中國`';
        // 取反
        console.log(!(num>10));//true

短路運算
原理:當有多個表達式時、左邊的表達式可以確定結果時、就不再執行右邊的表達式

  • 邏輯與
    語法: 表達式1 && 表達式2
    ** 如果第一個表達式的值爲真,則返回表達式2
    ** 如果第一個表達式的值爲假,則返回表達式1

  • 邏輯或
    語法: 表達式1 || 表達式2
    ** 如果第一個表達式的值爲真,則返回表達式1
    ** 如果第一個表達式的值爲假,則返回表達式2

  // 短路運算邏輯與: 
  //如果表達式1的結果爲真返回表達式2、
  //如果表達式1爲假則返回表達式1
        console.log(123 && 456);//456
        console.log(0 && 456);//0

        //  邏輯或:
       // 如果表達式1的結果爲真則返回表達式1、
        //如果爲假則返回表達式二
        console.log(123 || 456);//123
        console.log(0 || 456);//456

        //邏輯中斷會影響程序的運行結果
        var num1 = 0;
        // 因爲表達式1爲真後直接返回結果、不執行後面的表達式了
        console.log(123 || num1++);
        console.log(num1);//0

總結

  • 邏輯與 && 只要找到一個false、那麼就返回這個false
  • 邏輯或 || 只要找到一個true 那麼就返回這個true

賦值運算符
概念:用於把數據賦值給變量的運算符
賦值運算符

		var age = 10;
		age += 5;  // 相當於 age = age + 5;
		age -= 5;  // 相當於 age = age - 5;
		age *= 10; // 相當於 age = age * 10;

運算符優先級

  • 一元運算符裏面的邏輯非優先級很高
  • 邏輯與比邏輯或優先級高
    運算符的優先級
流程控制

流程概念
順序結構:程序會按照代碼的先後順序,依次執行
分支結構:根據不同的情況執行不同的代碼
循環結構:重複做一件事

在這裏插入圖片描述
分支流程控制

  • if語句
// 條件成立執行代碼,否則什麼也不做
if (條件表達式) {
    // 條件成立執行的代碼語句
}
  • if else語句(雙分支語句)
// 條件成立  執行 if 裏面代碼,否則執行else 裏面的代碼
if (條件表達式) {
    // [如果] 條件成立執行的代碼
} else {
    // [否則] 執行的代碼
}
  • 多分支
    ** 就是利用多個條件來選擇不同的語句來執行、得到不同的結果、多個條件只選擇一個的過程
// 適合於檢查多重條件。
//如果條件表達式爲真、執行語句1、不滿足繼續執行下面的語句
if (條件表達式1) {
    語句1;
} else if (條件表達式2)  {
    語句2;
} else if (條件表達式3)  {
   語句3;
 ....
} else {
    // 上述條件都不成立執行此處代碼
}

  • 總結
    **多分支語句就是一個多選一的過程、
    **else if 裏面的條件理論上是可以任意多個的
    **else if 中間有個空格

三元表達式

  • 語法結構
    **條件表達式? 表達式1 : 表達式2;
  • 執行思路
    **如果條件表達式爲 true ,返回表達式1的值,條件表達式爲 false,則返回表達式2的值
        var num = 10;
        //條件表達式爲真返回表達式1、爲false返回表達式2
        var result = num > 5 ? '是的' : '不對的';
        console.log(result);

** 簡單理解: 屬於簡化版的if else

類似於以下if else

		if(num>5){
		result='是的';
		}else{
		result='不是的';
		}

switch

  • switch 更加適合特定的值的判斷
  • switch 語句也是多分支語句,它用於基於不同的條件來執行不同的代碼、也是多選一的過程
  switch( 表達式 ){ 
      case value1:
          // 表達式 等於 value1 時要執行的代碼
          break;
      case value2:
          // 表達式 等於 value2 時要執行的代碼
          break;
      default:
          // 表達式 不等於任何一個 value 時要執行的代碼
  }

注: 執行case 裏面的語句時,如果沒有break,則繼續執行下一個case裏面的語句。

循環
目的:爲了重複執行某些代碼

  • for循環
    **語法結構
		for(初始化變量; 條件表達式; 操作表達式 ){
		    //循環體
		}
		 for (i = 1; i <= 10; i++) {
		            console.log('你好嗎');//循環體
		        }
		1、首先執行裏面的計算器變量、i=1;只執行一次
		2、在i<= 10中判斷是否滿足條件、滿足條件、執行循環體、不滿足跳出循環
		3、滿足條件執行i++、遞增變量、第一輪循環結束
		4、然後去執行i<=10是否滿足條件、滿足條件執行循環體、不滿足退出循環

斷點調試
目的:幫助我們觀察程序的運行過程

斷點調試的流程:
1、瀏覽器中按 F12–> sources -->找到需要調試的文件–>在程序的某一行設置斷點
2、Watch: 監視,通過watch可以監視變量的值的變化,非常的常用。
3、摁下F11,程序單步執行,讓程序一行一行的執行,這個時候,觀察watch中變量的值的變化。

雙重for循環
循環嵌套是指在一個循環語句中再定義一個循環語句的語法結構

for (外循環的初始; 外循環的條件; 外循環的操作表達式) {
    for (內循環的初始; 內循環的條件; 內循環的操作表達式) {  
       需執行的代碼;
   }
}
  • 內層循環可以看做外層循環的循環體語句
  • 內層循環執行的順序也要遵循 for 循環的執行順序
  • 外層循環執行一次,內層循環要執行全部次數

while

		while (條件表達式) {
		    // 循環體代碼 
		}

執行思路:

  • 1 先執行條件表達式,如果結果爲 true,則執行循環體代碼;如果爲 false,則退出循環,執行後面代碼
  • 2 執行循環體代碼
  • 3 循環體代碼執行完畢後,程序會繼續判斷執行條件表達式,如條件仍爲true,則會繼續執行循環體,直到循環條件爲 false 時,整個循環過程纔會結束

注意:

  • 使用 while 循環時一定要注意,它必須要有退出條件,否則會成爲死循環

do-while循環

		do {
		    // 循環體代碼 - 條件表達式爲 true 時重複執行循環體代碼
		} while(條件表達式);

執行思路

  • 1 先執行一次循環體代碼
  • 2 再執行條件表達式,如果結果爲 true,則繼續執行循環體代碼,如果爲 false,則退出循環,繼續執行後面代碼
    注意:先再執行循環體,再判斷,do…while循環語句至少會執行一次循環體代碼

continue、break
continue 關鍵字用於立即跳出本次循環

 for (var i = 1; i <= 5; i++) {
     if (i == 3) {
         console.log('這個包子有蟲子,扔掉');
         continue; // 跳出本次循環,跳出的是第3次循環 
         //會繼續吃第4、5個包子
      }
      console.log('我正在吃第' + i + '個包子呢');
 }

break 關鍵字用於立即跳出整個循環(循環結束)

 for (var i = 1; i <= 5; i++) {
     if (i == 3) {
         break; // 直接退出整個for 循環,跳到整個for下面的語句
         //break、發現包子裏有蟲子直接都不吃了
     }
     console.log('我正在吃第' + i + '個包子呢');
   }
數組

概念:

  1. 數組可以把一組相關的數據一起存放、
  2. 數組是指一組數據的集合,其中的每個數據被稱作數組元素,
  3. 在數組中可以存放任意類型的元素。
  4. 數組是一種將一組數據存儲在單個變量名下的優雅方式。

總結:數組就是一組數據的集合、儲存在單個變量下

創建數組的方式

  • 利用 new 創建數組
	var 數組名 = new Array()var arr = new Array();   // 創建一個新的空數組
	//注意 Array () ,A 要大寫 
  • 利用數組字面量創建數組
//1. 使用數組字面量方式創建空的數組
	var  數組名 = []//2. 使用數組字面量方式創建帶初始值的數組
	var  數組名 = ['小白','小黑','大黃','瑞奇'];
  1. 數組的字面量是方括號 [ ]
  2. 聲明數組並賦值稱爲數組的初始化
  3. 這種字面量方式也是我們以後最多使用的方式
  • 數組元素的類型
    數組中可以存放任意類型的數據,例如字符串,數字,布爾值等。
	var arrStus = ['小白',12,true,28.9];//不推薦這樣用、對代碼不友好

獲取數組中的元素

// 定義數組
	var arrStus = [1,2,3];
	// 獲取數組中的第2個元素
	alert(arrStus[1]);  //數組下標從0開始

  • 注意:如果訪問時數組沒有和索引值對應的元素,則得到的值是undefined

遍歷數組

  • 數組遍歷
    ** 通過for循環把數組中的每個元素從頭到尾都訪問一次(類似學生的點名)
	var arr = ['red','green', 'blue'];
	for(var i = 0; i < arr.length; i++){
	    console.log(arr[i]);//依次arr中的元素
	}
  • 數組的長度
    ** 數組的長度:默認情況下表示數組中元素的個數
    ** 使用“數組名.length”可以訪問數組元素的數量(數組長度)
      var arrStus = [1, 2, 3];
      alert(arrStus.length);  // arrStus的長度爲3
  1. 數組的長度是數組元素的個數、與數組的索引號不一樣
  2. 數組裏面的元素個數發生變化,這個 length 屬性跟着一起變化(length可以被修改)
  3. 設置的length屬性值大於數組的元素個數,則會在數組末尾出現空白元素
    ++設置的length屬性值小於數組的元素個數,則會把超過該值的數組元素刪除

數組新增元素
數組中可以通過以下方式在數組的末尾插入新元素:

  	數組[ 數組.length ] = 新數據;
  	  var aArr = ['pink', 'deeppink', 'aqua'];
        //新增數組
        aArr[3] = 'yellow';
        //打印數組
        console.log(aArr);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章