在web項目開發的過程中,前端尤爲重要的一門語言就是js,雖然作爲後端人員js對於我們來說不是特別重要,但是還是有必要會寫的。閒話少說,下面進入正題。那麼什麼是js呢?它有什麼作用呢?它是怎麼用的呢?不要捉急,下面我們就來淺談一下js。
js是JavaScript的簡寫,雖然它有一個java,但是它跟java一毛錢關係都沒有,它和java的關係就像雷鋒和雷峯塔之間的關係,是不是聽上去很不可思議(剛開始學的時候我一直以爲js是java的一個庫,想想都很扯淡)。它的名字的由來:NetSpace=>LiveScript,後來與Sun公司有合作,藉助java做推廣,將名字改爲JavaScript。它是客戶端(瀏覽器)的腳本語言,服務器端的腳本叫Node.js,還有vue.js……等等。我們可以用它給靜態頁面添加動態屬性,如:修改樣式,添加事件。
js引入方式:
-
方式1:通過頁面任意位置的script標籤,標籤中就可以書寫js代碼
-
方式2:通過script標籤加載外部的js文件
-
方式3:設置元素的特定屬性或添加特定事件
每一門語言中變量的定義都是尤爲重要的,下面就來講講js的變量定義。 -
數字:number,整數、浮點數
-
布爾:Boolean,true/false
-
字符串:string,單引號、雙引號都行,‘+’可以進行拼接
-
數組:array,可以使用[]或new Array()進行定義
-
空類型:null,只有一個值,類型名仍然是object
-
NaN:not a number。不是一個數字,類型依然是object,判斷是不能使用‘==’進行判斷,使用函數isNaN進行判斷
-
未定義:undefined
定義變量不賦值,使用對象不存在的屬性
直接判斷時與undefined進行比較,類型判斷是需要與字符串 -
對象:
方式1:先創建對象,然後添加屬性和方法。
方式2:使用json字符串創建
方式3:使用類似於構造方法的形式
基本運算
- 賦值運算:=
- 算數運算:+、-、*、/、%
- 符號運算:+=、-=、*=、/=、%=
- 自增自減:++、–
放在變量前:先自增或自減,然後再參與其他運算
放在變量後:先參與其他運算,然後再自增或自減 - 關係運算:>、>=、<、<=、!=
全等:"===",不但比較數值,還比較數據類型 - 邏輯運算:&&(與)、||(或)、!(非)
- 按位運算:&、|、^、`、<<、>>
- 三目運算:?:
格式:表達式1?表達式2:表達式3
流程:首先判斷表達式1的真假,若爲真則將表達式2作爲整個表達式的返回值,反之返回表達式3的值
流程控制
-
說明:
條件必須寫在()中
代碼塊必須寫在{}中 -
分支結構
if -else if-else -
分支結構
格式
switch(表達式){
case 常量1:
語句塊1
break
case 常量2:
語句塊2
break
……
default:
語句塊1
break
}
-
流程
當程序執行到switch-case語句時,首先計算表達式的值,然後與所有的case選項匹配,匹配到誰就執行對應的語句塊。直到遇見break跳出語句。若沒有匹配成功,則執行default語句塊。 -
說明:多個case條件不要相等
循環結構
-
while
- 說明:與Python中的使用幾乎一樣
- 格式:
while (表達式){
循環體
}
-
do-while
- 格式:
do{
循環體
} while(表達式) - 說明:
當程序執行到do-while語句時,首先執行循環體,然後判斷表達式的真假。若表達式的值爲真,
則返回繼續執行循環體;若表達式的值爲假,則執行後面的內容。 - 對比while:循環體至少執行一次,即使表達式一直不成立。
- 格式:
-
for
- 格式:
for(表達式1;表達式2;表達式3){
循環體
} - 流程:
當程序執行到for語句時,首先執行表達式1,然後判斷表達式2的真假,若表達式2的值爲真,則執行循環體,然後執行表達式3,接着繼續判斷表達式2的真假,若表達式2的值爲假,則跳過循環(循環結束). - 說明:
- 三個表達式可以任意組合的省略
- 表達式1通常做一些初始化的操作,省略後需要把相關操作放在循環之前
- 表達式2是循環條件,省略後一直爲真(死循環),可以結合break完成相關功能
- 表達式3通常是使循環趨於結束的語句,省略後需要放在循環體的末尾
- 格式:
-
for-in
- 類似於python中的用法,通常用於遍歷數組或對象
異常處理
- 說明:與python中的語法相似,可以認爲是一種特殊的流程控制語句
- 示例:
try{
//手動拋出異常
throw ‘出問題了&_&’
alert(‘nomal’)
} catch (e){
alert(e)
}
函數使用
- 定義函數的關鍵字:function
- 函數的調用可以放在定義之前
- 函數名不能重複,因爲後面的會覆蓋前面的
- 函數可以像普通變量一樣使用,打印時會打印整個函數體
- 函數參數:
- 函數的參數多傳或少傳都不會報錯
- 函數參數可以有默認值
- 函數的所有參數都會保存到arguments對象中,可以像數組一樣操作它
- 封閉空間
(function (a,b){
alert(a+b)
})(3,5)
變量作用域
- 全局變量:定義在函數外的變量,哪裏都可以使用
- 局部變量:定義在函數內部的變量,只能在函數內部使用