let 定義變數
特點:
let 定義的變數,不會進行預決議
let 定義的變數,與 forEach() 中的變數類似
每次執行都會定義出一個新的,相互之間不影響的變數
尤其是在回圈中,for,forEach,for...in,都最好使用let定義變數
let 不能重復定義變數名稱,一個變數名稱只能定義一次
let 定義的變數,如果是定義在 { } 中,只能在 { } 中被執行被呼叫
在 { } 之外,是不能被呼叫執行的{ } 包括 if switch for forEach for...in while function
let 在不同 { } 中,是不同作用域中定義let 變數
此時,變數的名稱與 其他 { } 中的變數名稱,或者{ }之外的變數名稱,是可以重復
const 定義變數
在JavaScript中往往,管const定義的變數,稱為常量 const定義的變數,不能被重復賦值,資料已經定義,不能更改、
const定義的變數名稱,也不能重復 const定義在{}中,不能在{}外呼叫
一般使用 const 定義 物件,陣列,函式,參考資料型別
const中存盤的是參考資料型別的地址,只要地址不改變,可以改變陣列,物件中的單元存盤的資料
箭頭函式
所謂的箭頭函式 是函式的另一種語法形式
const fun = function(){} 普通函式
const fun = ()=>{} 箭頭函式
將匿名函式的部分,從 function(){} 寫成 ()=>{} 的形式
如果函式只有一個引數,可以不寫()
const fun = function(e){} 普通函式
const fun = e => {} 箭頭函式
如果執行體中只有一行代碼,可以不寫{}
const fun = e=>{console.log(e)} 普通箭頭函式
const fun = e=> console.log(e) 不寫{}箭頭函式
關于箭頭函式this指向
在箭頭函式中,this指向,父級程式的this指向
如果父級程式有this指向,那么箭頭函式指向的就是父級程式的this
如果父級程式沒有this指向,那么指向的就是window
關于this的總結
1,普通的function函式
宣告式 --- window
賦值式 --- window
forEach回圈 --- window
定時器,延時器 --- window
物件中的函式 --- 物件本身
事件系結事件處理函式 --- 系結事件的標簽
2,箭頭函式的this指向
父級程式的this指向
如果父級程式有this指向(父級程式也是函式),this指向的就是父級程式的this指向
如果父級程式沒有this指向(陣列,物件....),this指向的是window
重點:箭頭函式,不能改變this指向,只有普通function函式,能改變this指向
改變this指向的方法
1, call()方法
語法: 函式.call(引數1,其他引數....可以是多個或者沒有 )
作用: 呼叫并且執行函式,同時,將函式的this指向,定義為指定的內容(引數1)
引數1,是改變的this的指向
其他引數,是原始函式的實參,原始函式有幾個形參,此時就要對應的輸入幾個實參,沒有形參,就沒有實參
2, apply()方法
語法: 函式.apply(引數1,引數2) 只有兩個引數
引數1:改變的this的指向內容
引數2:原始函式的實參,必須是一個陣列的形式,將實參定義成陣列的單元
其他用法和作用于 .call是相同的
總結: call方法與apply方法,作用,效果,都是完全一致的
只是對于原始函式的引數賦值方法,不同
call方法是通過其他多個引數來實作
apply方法是通過一個陣列引數,來實作
兩個方法沒有本質的區別
3, bind()方法
語法: const 變數 = 函式.bind(引數1);
不是立即執行函式
生成一個新的函式,這個新的函式是改變this指向之后的新的函式
引數1,定義的要改變的的this指向
其他引數,一般不定義,是使用函式原有的形參
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
總結的好
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/62615.html
標籤:JavaScript
下一篇:Maven測驗報錯
