-
scrollWidth,ClientWidth,OffsetWidth差異
- scrollWidth 容器內(nèi)容寬度 ->容器內(nèi)部的內(nèi)容最大能把容器撐多大就是它的scroll尺寸,如果沒(méi)撐開(kāi)則是容器的寬度
- ClientWidth 容器的寬度 ->不包含border
- OffsetWidth 容器樣式寬高 ->包括border
- window.innerWidth 瀏覽器窗口內(nèi)顯示區(qū)的寬度(只讀)
-
screenX,pageX,clientX差異
- 注意pageX,clientX都是以瀏覽器做參照物的,和父容器沒(méi)關(guān)系。screenX是以屏幕做參照物的。
function getX(e) {
// 距離瀏覽器左邊的距離 包含滾動(dòng)隱藏的距離
console.log(e.pageX);
// 距離屏幕左邊的距離
console.log(e.screenX);
// 距離瀏覽器左邊的距離 不包含滾動(dòng)隱藏的距離
console.log(e.clientX);
}
```
-
判斷字符串是數(shù)字還是字符串
var str = "abc";
+abc //NaN
str = "123"
+str = 123; -
原型角度,vue的雙向數(shù)據(jù)綁定原理
柯里化是什么,用處?
-
自己實(shí)現(xiàn)一個(gè)柯里化處理函數(shù)
const currying = function (fn) { const argsLen = fn.length; const args = []; const curryN = function () { [].push.apply(args,[].slice.call(arguments)); if(args.length >= argsLen){ return fn.apply(null,args.slice(0,argsLen)); }else{ return curryN; } }; return curryN;
};
const g = currying(function (a,b,c) {
console.log(a,b,c);
});
g(2)(3)(4,5); //2,3,4
```
- 用處:
- 延遲計(jì)算
```javascript
const g = currying(function (a,b,c) {
return a+b+c;
});
console.log(g(2)(3)(5));//10
```
- 參數(shù)復(fù)用
```javascript
var addEvent = currying(function(window,el,sType,fn,capture){
if (window.addEventListener) {
el.addEventListener(sType, function(e) {
fn.call(el, e);
}, (capture));
} else if (window.attachEvent) {
el.attachEvent("on" + sType, function(e) {
fn.call(el, e);
});
}
});
// 兼容模式的添加函數(shù)
var addCompatibleEvent = addEvent(window);
addCompatibleEvent(document.querySelector("#app"),"click",function (e) {
console.log(e);
},false);
```
柯里化(Currying),又稱(chēng)部分求值(Partial Evaluation),是把接受多個(gè)參數(shù)的函數(shù)變換成接受一個(gè)單一參數(shù)(最初函數(shù)的第一個(gè)參數(shù))的函數(shù),并且返回接受余下的參數(shù)而且返回結(jié)果的新函數(shù)的技術(shù)。
- 數(shù)組方法
- push,pop,shift,unshift都是作用在當(dāng)前數(shù)組上的,concat是處理后返回一個(gè)新數(shù)組.