国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

前端面經(jīng)整理之JS和CSS

stonezhu / 995人閱讀

摘要:作為對(duì)象原型鏈的終點(diǎn)。調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒(méi)有提供,該參數(shù)等于。它可以用于引用該函數(shù)的函數(shù)體內(nèi)當(dāng)前正在執(zhí)行的函數(shù)。

一 JS
二 CSS

一 JS ==和===的區(qū)別

===叫做嚴(yán)格運(yùn)算符 ==叫做相等運(yùn)算符
嚴(yán)格運(yùn)算符比較時(shí)不僅僅比較數(shù)值還要比較數(shù)據(jù)類型是否一樣
相等運(yùn)算符在比較相同類型的數(shù)據(jù)時(shí),與嚴(yán)格相等運(yùn)算符完全一樣。 在比較不同類型的數(shù)據(jù)時(shí),相等運(yùn)算符會(huì)先將數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換,然后再用嚴(yán)格相等運(yùn)算符比較。

undefined == null //true
undefined === null //false

ps:判斷NaN可以用Object.is()

Object.is(NaN, NaN); //true
undefined和null的區(qū)別

首先,undefinednullif語(yǔ)句中,都會(huì)被自動(dòng)轉(zhuǎn)為false,即null==undefined結(jié)果為true

通常 null表示"沒(méi)有對(duì)象",即該處不應(yīng)該有值,一般用法如下:
(1) 作為函數(shù)的參數(shù),表示該函數(shù)的參數(shù)不是對(duì)象。
(2) 作為對(duì)象原型鏈的終點(diǎn)。Object.getPrototypeOf(Object.prototype) // null
undefined表示"缺少值",就是此處應(yīng)該有一個(gè)值,但是還沒(méi)有定義,一般用法:
(1)變量被聲明了,但沒(méi)有賦值時(shí),就等于undefined
(2) 調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒(méi)有提供,該參數(shù)等于undefined。
(3)對(duì)象沒(méi)有賦值的屬性,該屬性的值為undefined。
(4)函數(shù)沒(méi)有返回值時(shí),默認(rèn)返回undefined。

JS的基本數(shù)據(jù)類型

JS基本數(shù)據(jù)類型有5種
String Number Boolean Null Undefined
以及引用數(shù)據(jù)類型Object(包括Array Function)

JS中typeof和instanceof用法區(qū)別

首先typeof用以獲取一個(gè)變量類型
typeof一般只能返回如下幾個(gè)結(jié)果
number boolean string function object undefined

console.log(typeof i);    // undefined
console.log(typeof 1);   // number
console.log(typeof "a"); // string
console.log(typeof true);  // boolean

console.log(typeof function () {});  //function

console.log(typeof [1, "2", true]);  //object
console.log(typeof { o: "hello", c: "world" });  //object
console.log(typeof null);  //object
console.log(typeof new Number(2));  //object

以上可知用typeof無(wú)法判斷array類型 因?yàn)椴还苁菙?shù)組還是對(duì)象都會(huì)返回object
這時(shí)候就需要instanceof
instanceof運(yùn)算符用來(lái)測(cè)試一個(gè)對(duì)象在其原型鏈中是否存在一個(gè)構(gòu)造函數(shù)的prototype屬性 即判斷一個(gè)變量是否是某個(gè)對(duì)象的實(shí)例

var arr = [1,2,3]; 
alert(arr instanceof Array);   // true

ps:其他判斷方法如下
Array.isArray

Array.isArray([1, 2, 3]);  // true
Array.isArray({foo: 123}); // false
Array.isArray("foobar");   // false
Array.isArray(undefined);  // false

constructor

var arr = [1,2,3]; 
console.log(arr.constructor === Array);   // true

Object.prototype.toString.call()

var arr = [1,2,3];
Object.prototype.toString.call(arr) === "[object Array]"; //true
JS用setTimeout遞歸實(shí)現(xiàn)setInterval

首先 setTimeout()setInterval()經(jīng)常被用來(lái)處理延時(shí)和定時(shí)任務(wù) setTimeout()方法用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計(jì)算表達(dá)式,而setInterval()則可以在每隔指定的毫秒數(shù)循環(huán)調(diào)用函數(shù)或表達(dá)式,直到clearInterval把它清除

//setTimeout實(shí)現(xiàn)setInterval功能
setTimeout(function(){
  //do something
  setTimeout(arguments.callee,interval);
},interval)

ps:為什么要用setTimeout實(shí)現(xiàn)setInterval?

JS中的arguments和arguments.callee

arguments對(duì)象是所有(非箭頭)函數(shù)中都可用的局部變量。你可以使用arguments對(duì)象在函數(shù)中引用函數(shù)的參數(shù)
calleearguments 對(duì)象的一個(gè)屬性。它可以用于引用該函數(shù)的函數(shù)體內(nèi)當(dāng)前正在執(zhí)行的函數(shù)。這在函數(shù)的名稱是未知時(shí)很有用,例如在沒(méi)有名稱的函數(shù)表達(dá)式 (也稱為“匿名函數(shù)”)內(nèi)

代碼演示:

此外arguments是類數(shù)組對(duì)象 其沒(méi)有Array的一些方法 但有類似Array的一些特點(diǎn)
將函數(shù)的實(shí)際參數(shù)轉(zhuǎn)換成數(shù)組的方法如下

/**
_buffer.slice();
// is equivalent to
_buffer.slice(0);
// also equivalent to
_buffer.slice(0, _buffer.length);
**/
var args = Array.prototype.slice.call(arguments)//方法一
var args = [].slice.call(arguments, 0)//方法二
//方法三:
var args = [];
for (var i = 1; i < arguments.length; i++) {
  args.push(arguments[i]);
}
JS嚴(yán)格模式("use strict")

首先是嚴(yán)格模式的用法

// 為整個(gè)script標(biāo)簽開啟嚴(yán)格模式, 需要在所有語(yǔ)句之前放一個(gè)特定語(yǔ)句 "use strict";
"use strict";
var v = "Hi!  I"m a strict mode script!";


//要給某個(gè)函數(shù)開啟嚴(yán)格模式,得把 "use strict";聲明一字不漏地放在函數(shù)體所有語(yǔ)句之前
function strict(){
  // 函數(shù)級(jí)別嚴(yán)格模式語(yǔ)法
  "use strict";
  function nested() { return "And so am I!"; }
  return "Hi!  I"m a strict mode function!  " + nested();
}
function notStrict() { return "I"m not strict."; }

嚴(yán)格模式同時(shí)改變了語(yǔ)法及運(yùn)行時(shí)行為。變化通常分為這幾類:將問(wèn)題直接轉(zhuǎn)化為錯(cuò)誤(如語(yǔ)法錯(cuò)誤或運(yùn)行時(shí)錯(cuò)誤), 簡(jiǎn)化了如何為給定名稱的特定變量計(jì)算,簡(jiǎn)化了 eval 以及 arguments, 將寫"安全"JavaScript的步驟變得更簡(jiǎn)單

嚴(yán)格模式主要涉及如下幾個(gè)方面

創(chuàng)設(shè)eval作用域

禁止this關(guān)鍵字指向全局對(duì)象

禁止在函數(shù)內(nèi)部遍歷調(diào)用棧(即禁止使用argumentscallee)

對(duì)象不能有重名的屬性

函數(shù)不能有重名的參數(shù)

函數(shù)必須聲明在頂層

...

詳情 請(qǐng)移步阮一峰的 Javascript 嚴(yán)格模式詳解

JS閉包

閉包Closure詳見 白話JS閉包

JS數(shù)組去重的簡(jiǎn)潔方法

主要是利用 ES6 setfilter方法 詳見 最近碰到的sort排序 以及 set和filter數(shù)組去重

JS中的apply、call、bind

簡(jiǎn)單總結(jié):

apply 、 call 、bind 三者都是用來(lái)改變函數(shù)的this對(duì)象的指向的;
apply 、 call 、bind 三者第一個(gè)參數(shù)都是this要指向的對(duì)象,也就是想指定的上下文;
apply 、 call 、bind 三者都可以利用后續(xù)參數(shù)傳參;
bind是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用;apply、call則是立即調(diào)用
call 需要把參數(shù)按順序一個(gè)個(gè)傳遞進(jìn)來(lái),而 apply 則是把參數(shù)放在數(shù)組里

詳情移步深入淺出妙用 Javascript 中 apply、call、bind

JS的 for in 和 for of

簡(jiǎn)單說(shuō) for in是遍歷keyfor of是遍歷value

let arr = ["a","b"];
for (a in arr) {
    console.log(a);//0,1
}

for (a of arr) {
    console.log(a);//a,b
}

ps:如何將對(duì)象的鍵名輸出數(shù)組

當(dāng)然for in配合hasOwnProperty可以過(guò)濾來(lái)著原型鏈上繼承得到的屬性

異步解決方案Promise

Promise的構(gòu)造函數(shù)接收一個(gè)參數(shù),是函數(shù),并且傳入兩個(gè)參數(shù):resolve,reject,分別表示異步操作執(zhí)行成功后的回調(diào)函數(shù)和異步操作執(zhí)行失敗后的回調(diào)函數(shù)。其實(shí)這里用“成功”和“失敗”來(lái)描述并不準(zhǔn)確,按照標(biāo)準(zhǔn)來(lái)講,resolve是將Promise的狀態(tài)置為fullfiled,reject是將Promise的狀態(tài)置為rejected

舉個(gè)?

ps:promise詳情請(qǐng)移步大白話講解Promise

二 CSS CSS3的box-sizing

1.content-box 默認(rèn)值 borderpadding不計(jì)算入width之內(nèi)
2.border-box borderpadding計(jì)算入width之內(nèi)

rem和em的區(qū)別

em是相對(duì)于父元素的font-size屬性值來(lái)計(jì)算的
rem是相對(duì)于html標(biāo)簽的font-size屬性值來(lái)計(jì)算的

居中的幾種方法

主要是水平居中或者垂直居中
詳見web開發(fā)常用的幾種居中形式

CSS的三種基本引入方式
//外部樣式表 

//內(nèi)部樣式表

//內(nèi)聯(lián)

這是一個(gè)段落。

CSS權(quán)重計(jì)算

內(nèi)聯(lián)樣式表的權(quán)值最高 1000
ID 選擇器的權(quán)值為 100
Class 類選擇器的權(quán)值為 10
HTML 標(biāo)簽選擇器的權(quán)值為 1

CSS display: none和visibility: hidden的區(qū)別

①都是隱藏元素,但是前者文檔布局中不占用空間,后者仍占用空間
display:none隱藏產(chǎn)生reflowrepaint(回流與重繪)
③前者有株連性,即父元素設(shè)置display: none后子元素不管怎樣設(shè)置都不能顯示,而后者的子元素通過(guò)設(shè)置visibility: visible后還是能顯示出來(lái)的

CSS的reflow和repaint

reflow:當(dāng)render樹的一部分或者全部因?yàn)榇笮∵吘嗟葐?wèn)題發(fā)生改變而需要重建的過(guò)程,叫做回流
repaint:當(dāng)諸如顏色背景等不會(huì)引起頁(yè)面布局變化,而只需要重新渲染的過(guò)程叫做重繪

ps:頁(yè)面的顯示過(guò)程分為以下幾個(gè)階段

1、生成DOM樹(包括display:none的節(jié)點(diǎn))
2、在DOM樹的基礎(chǔ)上根據(jù)節(jié)點(diǎn)的集合屬性(margin,padding,width,height等)生成render樹(不包括display:none head節(jié)點(diǎn),但是包括visibility:hidden的節(jié)點(diǎn))
3、在render樹的基礎(chǔ)上繼續(xù)渲染顏色背景色等樣式

reflow和repaint詳情請(qǐng)移步

未完待續(xù)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/89697.html

相關(guān)文章

  • 前端面經(jīng)整理JSCSS

    摘要:作為對(duì)象原型鏈的終點(diǎn)。調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒(méi)有提供,該參數(shù)等于。它可以用于引用該函數(shù)的函數(shù)體內(nèi)當(dāng)前正在執(zhí)行的函數(shù)。 一 JS 二 CSS 一 JS ==和===的區(qū)別 ===叫做嚴(yán)格運(yùn)算符 ==叫做相等運(yùn)算符嚴(yán)格運(yùn)算符比較時(shí)不僅僅比較數(shù)值還要比較數(shù)據(jù)類型是否一樣相等運(yùn)算符在比較相同類型的數(shù)據(jù)時(shí),與嚴(yán)格相等運(yùn)算符完全一樣。 在比較不同類型的數(shù)據(jù)時(shí),相等運(yùn)算符會(huì)先將數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換,...

    lvzishen 評(píng)論0 收藏0
  • 前端最強(qiáng)面經(jīng)匯總

    摘要:獲取的對(duì)象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對(duì)象即使沒(méi)有代碼,也會(huì)把默認(rèn)的祖宗八代都顯示出來(lái)而只能獲取元素屬性中的樣式。因此對(duì)于一個(gè)光禿禿的元素,方法返回對(duì)象中屬性值如果有就是據(jù)我測(cè)試不同環(huán)境結(jié)果可能有差異而就是。 花了很長(zhǎng)時(shí)間整理的前端面試資源,喜歡請(qǐng)大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...

    wangjuntytl 評(píng)論0 收藏0
  • 拒信收割機(jī)の前端面經(jīng)(CVTE,唯品會(huì),百度)

    摘要:另外回答的時(shí)候要淡定,一些問(wèn)題就算不懂也不能慌,要和面試官談笑風(fēng)生,然后盡量扯回到自己懂的東西上面大公司比如百度給我的感覺(jué)就是很重視基礎(chǔ)思維和潛力。 —— 雖然我的offer少,但是我的拒信多啊 這幾天終于閑下來(lái),做一點(diǎn)微小的工作,整理了一些之前幾家公司的前端面試題和個(gè)人經(jīng)驗(yàn),想做前端的師弟妹可以參考,也歡迎各同行大神來(lái)指教~ (以下問(wèn)題不分先后,時(shí)間久遠(yuǎn)難免有些遺漏;很多問(wèn)題面試官都...

    yzd 評(píng)論0 收藏0
  • 拒信收割機(jī)の前端面經(jīng)(CVTE,唯品會(huì),百度)

    摘要:另外回答的時(shí)候要淡定,一些問(wèn)題就算不懂也不能慌,要和面試官談笑風(fēng)生,然后盡量扯回到自己懂的東西上面大公司比如百度給我的感覺(jué)就是很重視基礎(chǔ)思維和潛力。 —— 雖然我的offer少,但是我的拒信多啊 這幾天終于閑下來(lái),做一點(diǎn)微小的工作,整理了一些之前幾家公司的前端面試題和個(gè)人經(jīng)驗(yàn),想做前端的師弟妹可以參考,也歡迎各同行大神來(lái)指教~ (以下問(wèn)題不分先后,時(shí)間久遠(yuǎn)難免有些遺漏;很多問(wèn)題面試官都...

    channg 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<