参考面经(字节): 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; //报错