參考面經(字節): https://segmentfault.com/a/11...javascript
推薦幾個學習的網站:
現代JS教程::https://zh.javascript.info/
JS詞典:https://developer.mozilla.org...
阮一峯老師的ES6入門:https://es6.ruanyifeng.com/#d...css
String,Bool,Undefined,Object,Symbol,Number,Nullhtml
參見https://cloud.tencent.com/dev...前端
let arr = new Array([...Set對象]) let set=new Set(arr)
let a=new Set([1,2,3]); let b=new Set([2,3,4]); //並集 let union=new Set([...a,...b]); console.log(union); //交集 let intersect=new Set([...a].filter(x=>b.has(x))); console.log(intersect); //差集 let diff=new Set([...a].filter(x=>!b.has(x)));
// 數組快速去重 console.log([...new Set(arr)])
參見https://juejin.cn/post/684490...vue
下面幾種方法前兩個不許確java
instanceof 判斷實例是否屬於某種類型,邏輯上是按照該實例的__proto__一層層向上找,子類或者後代一樣適用。
它假定只有一個全局環境。若是網頁中包含多個框架,那實際上就存在兩個以上不一樣的全局執行環境,從而存在兩個以上不一樣版本的Array構造函數。若是你從一個框架向另外一個框架傳入一個數組,那麼傳入的數組與在第二個框架中原生建立的數組分別具備各自不一樣的構造函數。react
toString 能夠用toString封裝一個函數,判斷變量的類型es6
function getType(obj) { return Object.prototype.toString.call(obj).slice(8,-1); } var a = [1,2,3]; console.log(getType(a)); //Array var b = function(){}; console.log(getType(b)); //Function
**typeof(Arr) ** // Object 不可用於判斷Array,通常用來判斷基本類型
typeof基本用法參見下圖ajax
https://segmentfault.com/a/11...
1.事件流
描述的是從頁面中接收事件的順序,也可理解爲事件在頁面中傳播的順序。
2.事件
就是用戶或瀏覽器自身執行的某種動做。諸如click(點擊)、load(加載)、mouseover(鼠標懸停)。
3.事件處理程序
響應某個事件的函數就叫事件處理程序(或事件偵聽器)。編程
addEventListener()
和removeEventListener()
。全部DOM節點中都包含這兩個方法,而且它們都接收3個參數:要處理的事件名、做爲事件處理程序的函數和一個布爾值。當這個布爾值爲true
時,表示在捕獲階段調用事件處理程序;若果是false
,表示在冒泡階段調用事件處理程序。
調用順序:
捕獲階段
,按照由外以內調用事件處理函數;
冒泡階段
,按照由內至內調用事件處理函數;
捕獲階段
又在冒泡階段
調用事件處理程序時:事件按DOM事件流的順序執行事件處理程序,且當事件處於目標階段時,事件調用順序決定於綁定事件的書寫順序(ps:目標階段是指點中的最內節點)
阻止冒泡
參見紅寶書(第4版P525)
沒搞懂
沒搞懂
屬於基礎知識,不贅述
flex
屬性是flex-grow
, flex-shrink
和 flex-basis
的簡寫,默認值爲0 1 auto
。後兩個屬性可選。這裏至關於flex:1 1 auto。flex-grow
屬性定義項目的放大比例,默認爲0
,即若是存在剩餘空間,也不放大。若是全部項目的flex-grow
屬性都爲1,則它們將等分剩餘空間(若是有的話)。若是一個項目的flex-grow
屬性爲2,其餘項目都爲1,則前者佔據的剩餘空間將比其餘項多一倍。flex-shrink
屬性定義了項目的縮小比例,默認爲1,即若是空間不足,該項目將縮小。若是全部項目的flex-shrink
屬性都爲1,當空間不足時,都將等比例縮小。若是一個項目的flex-shrink
屬性爲0,其餘項目都爲1,則空間不足時,前者不縮小。flex-basis
屬性定義了在分配多餘空間以前,項目佔據的主軸空間(main size)。瀏覽器根據這個屬性,計算主軸是否有多餘空間。它的默認值爲auto
,即項目的原本大小。它能夠設爲跟width
或height
屬性同樣的值(好比350px),則項目將佔據固定空間。
https://zh.javascript.info/js...
positon和display是前端最重要的兩個基本屬性,必定得好好寫
參見:阮一峯老師的https://www.ruanyifeng.com/bl...
// Q1 若是一個函數中有this,可是它沒有被上一級的對象所調用,那麼this指向的就是window var a = 1; function print () { console.log(this.a) } print() //a=1 // Q2 若是一個函數中有this,這個函數有被上一級的對象所調用,那麼this指向的就是上一級的對象。 const obj = { a: 2, print: function () { console.log(this.a) } } obj.print(); //2 // Q3 const obj = { a: 3, print: function () { console.log(this.a) } } obj.print() //3 與下面的foo()區別在因而全局環境仍是obj環境 const foo = obj.print; foo() //undefind 全局狀況下調用的,沒有全局變量a // Q3.1 若是一個函數中有this,這個函數中包含多個對象,儘管這個函數是被最外層的對象所調用,this指向的也只是它上一級的對象 const obj = { a: 3, printOut:{ a:4, printIn: function(){ console.log(this.a)}, }, } obj.printOut.printIn() //4 const foo = obj.printOut.printIn; foo() //undefind 全局狀況下調用的,沒有全局變量a // Q4 const obj = { a: 4, print: () => { console.log(this.a) } } obj.print(); //undefined 有箭頭函數,對象不構成單獨的做用域,致使`print`箭頭函數定義時的做用域就是全局做用域。 // Q5 var a = 5 const obj = { a: 6, print: () => { console.log(this.a) } } obj.print.call({a: 7}); //5 理由同上 // Q6 不太會 function Person () { this.a = 8 this.print = function () {console.log(this.a)} return {a: 9} } const p = new Person() console.log(p.a) console.log(p.print()) // Q7 不太會 'use strict'; var a = 1; function print () { console.log(this.a) } print() //1 //考察let,const // 1. a = 100; let a; a = 10; function test(num) { console.log(a); a = num; } console.log(a); test(5); console.log(a); // 2. const a; a = 10; //報錯