無意間看到了之前的筆記,順手在簡書上保存一下
函數(shù)
函數(shù)
將實(shí)現(xiàn)某一特定功能的代碼段集合起來,使其能夠重復(fù)使用
函數(shù)的聲明
- 基本語法
- function 名字([參數(shù)1],[參數(shù)2]){
* 函數(shù)體
* [return 返回值]
}
- 字面量方式(匿名函數(shù))
- var 變量名=function(){
}
- 以對象的形式來聲明
運(yùn)行函數(shù)
函數(shù)名 table()
變量名 aa()
自調(diào)用 (fn)()
事件
參數(shù)
rest參數(shù)
函數(shù)重載
同一個(gè)函數(shù)因?yàn)閰?shù)類型或數(shù)量的不同,可以對應(yīng)多個(gè)函數(shù)的實(shí)現(xiàn)每種實(shí)現(xiàn)對應(yīng)一個(gè)函數(shù)體
函數(shù)返回值
return
返回值默認(rèn) undefined
返回值是任意數(shù)據(jù)類型 只能返回一個(gè)值
判斷是否是一個(gè)數(shù)組
aa instanceof Array
回調(diào)函數(shù)
在一個(gè)函數(shù)的名字當(dāng)做另一個(gè)函數(shù)的參數(shù),當(dāng)調(diào)用這個(gè)參數(shù)的時(shí)候,這個(gè)函數(shù)就是回調(diào)函數(shù)
箭頭函數(shù)
var bb= ele => ele
var 變量=參數(shù)=》返回值
代碼運(yùn)行環(huán)境
- 宿主環(huán)境
- 運(yùn)行環(huán)境
- 全局環(huán)境
- 局部環(huán)境 函數(shù)環(huán)境
作用域(根據(jù)運(yùn)行環(huán)境劃分)
全局作用域
-
函數(shù)作用域
var a=1 function aaa(){ console.log(a)//輸出1 a=2 console.log(a)//輸出2 function bbb(){ console.log(a)//輸出undefined var a=3 console.log(a)//輸出3 } bbb() } aaa() console.log(a)//輸出2
let
- 塊級作用域
- let 作用域在{}內(nèi) console調(diào)用只能在 let之后 之前會(huì)報(bào)錯(cuò)
let使用
同var
注意
- 不能夠重復(fù)定義
- 作用范圍
- 嵌套
- 沒有預(yù)解析,不存在變量提升,只能先聲明后調(diào)用
- 暫時(shí)性死去 tdz
- 形參不能用let重新聲明
不合理
- for循環(huán)下標(biāo) i會(huì)泄露
- 變量不提升
- let 記錄當(dāng)前循環(huán)下標(biāo)
var arr=[];
for (let i = 0; i < 5; i++) {
arr[i]=function (){
console.log(i)
}
}
arr[3]()
動(dòng)畫函數(shù) 案例
animate(box,{width:400,height:400,left:300},function(){
box.style.background='green'
})
animate(box,{width:400,height:400,left:300},function(){
animate(box,{left:100})
})
function animate(obj,attr,callback){
// 對象,對象的屬性和值 json格式 ,回調(diào)函數(shù)
let t=setInterval(move,200);
function move(){
for(let i in attr){
let currentV=parseInt(getComputedStyle(obj,null)[i])+10;
// 獲取當(dāng)前obj的長寬屬性
if(currentV>=attr[i]){
// 如果實(shí)際尺寸達(dá)到要求,
currentV=attr[i];
// 讓當(dāng)前的值等于要求尺寸
clearInterval(t);
// 就清除時(shí)間函數(shù)
if(callback){
// 回調(diào)函數(shù)
callback.call()
}
}
obj.style[i]=currentV+'px';
}
}
}
輪播圖雙下標(biāo)思路
- 狀態(tài)初始化
- now next
- 排好位置 now在當(dāng)前窗口,next位置放在右邊,left值為width
- 開始動(dòng)畫
- now left:-width
- next left:0;
- 更新 now=next;
獲取樣式
getComputedStyle(box,null).width
正則
運(yùn)用正則在字符串上分裝一個(gè)去空函數(shù),
var str=" ab3'4Rc3Yd4d5de8f5dg"
String.prototype.trims=function (type='l') {
let reg;
if(type=='l'){
reg=/^\s+/;
}else if(type=='r'){
reg=/\s+$/;
}else if(type=='a'){
reg=/^\s+|\s+$/g;
}
return this.replace(reg,'');
}
console.log(str.length)
let ss=str.trims('l');
console.log(ss.length)
()
作用與用法:
- 分組,返回會(huì)多一個(gè)下標(biāo)
- 優(yōu)先級,單獨(dú)處理,添加量詞等
反向引用
常用于匹配字符串前后一致