1.宣告與變數
let宣告的變數可以多次賦值
let 變數名 = 值;
const修飾叫常量,只能賦值一次,但是參考的值可以改變
var宣告的變數可以多次賦值
結論:能用let不用var ,因為作用域的問題
2.基本型別和物件型別
undefined 和 null
- undefined 指 未定義的物件或者屬性時 ,或宣告了變數沒有賦初始值時
- null 指不參考任何一個值
結論:二者都是沒有屬性,但是null由程式員產生 undefined是JS產生
string (字串
推薦模板字串(Template strings)(只能用反引號
let url = `/test?name=${name}&age=${age}`;
number和bigint
number型別標識的是小數、雙精度的浮點數
- 既然是浮點小數就可以除零
- 浮點小數都有運算精度問題如 2.0-1.1=0.8999999999
字串轉數字:parseInt("10.5")//結果是10,因為是小數計算
要表示真正的整數,需要用到bigint,數字的結尾需用到n 表示它是一個bigint型別
10n / 3n = 3n; // 結果是3n,按整數除法處理
boolean
- Truthy
-Falsy
在JS中并不是boolean才能用于條件判斷,你可以在if中使用【數字】、【字串】作為判斷條件
這是就有一個規則:當需要判斷條件時,這個值被當作true 還是false 當作true的值歸類為Truthy,當作false的值歸類為falsy
- 空串,常數為零的才被視為Falsy
- 只要你的字串有內容就都會被視為Truthy
let b = 1;
if(b){ //true
console.log("進入了")
}
false的有:
- Nullsh(null,undefined)
- 0,0n,NaN
- "",",``
物件型別
函式的本質是物件
- 1.可以參與賦值,具名函式也能參與
- 2.有屬性,有方法
- 3.可以作為方法引數
- 4.可以作為方法回傳值
定義函式Function
function 函式名(引數){
// 函式體
return a+b;
}
add (1,2);// 回傳3
JS函式呼叫特點:沒有限制,對引數的個數也沒有限制
- add('a','b'); //回傳ab
- add(4,5,6); //回傳9 ,第三個引數沒有被用到,不會報錯
- add(1);//回傳NaN B沒有被定義,是undefined,運行結果是NaN
方法默認引數效果:
function pagination(page = 1 ,size = 10){
console,log(page.size);
}
匿名函式:
匿名函式建議兩邊加上圓括號,當成一個運算式
有兩種使用場景:一種是定義完畢以后立刻呼叫+(引數),第二種是作為其他物件的額方法
第一種:(function (引數){
//函式體
return 結果;
})(1,2)
第二種:
<p>id = "p1"點我呀</p>
document.getElementById("p1").onlick = (function(){
console.log("滑鼠單擊了...");
})
箭頭函式:
如果只有一個引數,()可以省略
如果函式體內只有一行代碼,{}可以省略
可以理解為匿名函式更簡化的語法
(引數) =>{
//函式體
return 結果;
}
更簡化:
<p>id = "p1"點我呀</p>
document.getElementById("p1").onlick = ()=> console.log("滑鼠單擊了哦") //箭頭函式內容
函式作用域
- 函式可以嵌套(在JS鐘很常見)
- 以函式為分界線劃定作用域,所有函式之外的是全域作用域
- 查找變數時,由內向外查找
- 在內層作用域找到變數就會停止查找,不會再找外層
- 所有作用域都找不到變數時,報錯
- 作用域本質上是函式物件的屬性,可以通過console.dir來查看除錯
- 可以在內部訪問外部的變數
閉包
- 函式定義時,它的作用域已經確定好了,因此無論函式將來去了哪,都能從它的作用域中找到當時的那些變數
- 別被概念忽悠了,閉包就是指函式能夠訪問自己的作用域中變數
var和作用域
- 如果函式外層參考的是let變數,那么外層普遍的{}也會作為作用域邊界,最外層的let 也占一個script作用域
- 如果函式外層參考的是var變數,外層普通的{}不會被視為邊界
- 想要里面的變數和外面的變數能區分開來,最簡單的辦法是改成let,或者用函式來界定作用域
Array陣列
- 創建陣列:let arr = [1,2,3]
- 獲取陣列元素:console,log(arr[0]); //輸出1
- 修改陣列元素:array[0] = 5; //陣列元素變成5,2,3
- 遍歷陣列元素,其中length 是陣列屬性,代表長度:for(let i = 0;i<=arr.length; i++){ console.log(arr[i])}
API
- push 向陣列尾部(右側)添加元素
- shift 從陣列頭部(左側)移除元素
- splice 洗掉【引數1】索引位置的【引數2】個元素
- join 默認使用(,)進行連接符號(' ')是連在一起,沒有分隔(‘ - ‘)結果是a-b-c
- map的函式,引數代表舊元素,回傳值代表新元素 let arr = [1,2,3,4] function a(i) {return i =10} arr.map(a)
- filter的函式 引數代表舊元素,回傳值true表示要留下的元素
- forEach 針對每一個元素執行提供的函式(executes a provided function once for each array element),除了拋出例外以外,沒有辦法中止或跳出 forEach() 回圈,如果你需要中止或跳出回圈,forEach() 方法不是應當使用的工具,
兩個稱呼
- 高階函式 map filter forEach
- 回呼函式 例如作為引數傳入的函式
Object(物件
- 物件的基本語法(僅限物件方法這么寫,僅限于物件內部
屬性可以增刪
- java中的OBject是用類作為模板來創建,物件不能脫離類模板的范圍,一個物件的屬性,能使用的方法的都是確定的
- JS的物件,不需要什么模板,他的屬性和方法可以隨時加減
- 動態添加get set

-
this資料型別
- 在JS中是隱式引數,但它與函式運行時背景關系能相關
- function關鍵字宣告的函式就是落單的this
JS動態型別
- 靜態類語言如Java,值有類,變數有型別,賦值給變數時,型別要相符
- JS是動態型別,值有型別,但是變數沒有型別,賦值給變數時,沒要求,但是變數沒有型別,會給后期維護帶來困難
控制陳述句
for in 主要來遍歷物件
- const.n代表遍歷出來的屬性名
- 方法名也能被遍歷出來(它其實也算一種特殊的屬性)
- 遍歷子物件時,父物件的屬性會跟著遍歷出來
- 在for in內獲取屬性值,要使用[]語法,而不是(.)語法
for of 用來遍歷陣列可以是迭代物件如:Map Set等
try catch(建議自行了解一下)
Fetch API
可以用來獲取遠程資料,兩種接收方式,同步方式和異步方式
fetch(url options)
(待填坑)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/548179.html
標籤:JavaScript
下一篇:前端設計模式——委托模式
