近期在复习ES6,针对ES6新的知识点,以问答形式整理一个全面知识和问题汇总。(全干货,适合对ES6有一定理解的同学复习,以及ES6面试。)
一、问:ES6是什么,为什么要学习它,不学习ES6会怎么样?
答: ES6是新一代的JS语言标准,对分JS语言核心内容做了升级优化,规范了JS使用标准,新增了JS原生方法,使得JS使用更加规范,更加优雅,更适合大型应用的开发。学习ES6是成为专业前端正规军的必经之路。不学习ES6也可以写代码打鬼子,但是最多只能当个游击队长。
二、问:ES5、ES6和ES2015有什么区别?
答: ES2015特指在2015年发布的新一代JS语言标准,ES6泛指下一代JS语言标准,包含ES2015、ES2016、ES2017、ES2018等。现阶段在绝大部分场景下,ES2015默认等同ES6。ES5泛指上一代语言标准。ES2015可以理解为ES5和ES6的时间分界线。
三、问:babel是什么,有什么作用?
答:babel是一个 ES6 转码器,可以将 ES6 代码转为 ES5 代码,以便兼容那些还没支持ES6的平台。
四、问:let有什么用,有了var为什么还要用let?
答: 在ES6之前,声明变量只能用var,var方式声明变量其实是很不合理的,准确的说,是因为ES5里面没有块级作用域是很不合理的,甚至可以说是一个语言层面的bug(这也是很多c++、java开发人员看不懂,也瞧不起JS语言的劣势之一)。没有块级作用域回来带很多难以理解的问题,比如for循环var变量泄露,变量覆盖等问题。let 声明的变量拥有自己的块级作用域,且修复了var声明变量带来的变量提升问题。
五、问:举一些ES6对String字符串类型做的常用升级优化?
答:
1、优化部分:
ES6新增了字符串模板,在拼接大段字符串时,用反斜杠(`)取代以往的字符串相加的形式,能保留所有空格和换行,使得字符串拼接看起来更加直观,更加优雅。
2、升级部分:
ES6在String原型上新增了includes()方法,用于取代传统的只能用indexOf查找包含字符的方法(indexOf返回-1表示没查到不如includes方法返回false更明确,语义更清晰), 此外还新增了startsWith(), endsWith(), padStart(),padEnd(),repeat()等方法,可方便的用于查找,补全字符串。
六、问:举一些ES6对Array数组类型做的常用升级优化?
答:
1、优化部分:
a. 数组解构赋值。ES6可以直接以let [a,b,c] = [1,2,3]
形式进行变量赋值,在声明较多变量时,不用再写很多let(var),且映射关系清晰,且支持赋默认值。
b. 扩展运算符。ES6新增的扩展运算符(...)(重要),可以轻松的实现数组和松散序列的相互转化,可以取代arguments对象和apply方法,轻松获取未知参数个数情况下的参数集合。(尤其是在ES5中,arguments并不是一个真正的数组,而是一个类数组的对象,但是扩展运算符的逆运算却可以返回一个真正的数组)。扩展运算符还可以轻松方便的实现数组的复制和解构赋值(let a = [2,3,4]; let b = [...a]
)。
2、升级部分:
ES6在Array原型上新增了find()方法,用于取代传统的只能用indexOf查找包含数组项目的方法,且修复了indexOf查找不到NaN的bug([NaN].indexOf(NaN) === -1
).此外还新增了copyWithin(), includes(), fill(),flat()等方法,可方便的用于字符串的查找,补全,转换等。
七、问:举一些ES6对Number数字类型做的常用升级优化?
答:
1、优化部分:
ES6在Number原型上新增了isFinite(), isNaN()方法,用来取代传统的全局isFinite(), isNaN()方法检测数值是否有限、是否是NaN。ES5的isFinite(), isNaN()方法都会先将非数值类型的参数转化为Number类型再做判断,这其实是不合理的,最造成isNaN('NaN') === true
的奇怪行为--'NaN'是一个字符串,但是isNaN却说这就是NaN。而Number.isFinite()和Number.isNaN()则不会有此类问题(Number.isNaN('NaN') === false
)。(isFinite()同上)
2、升级部分:
ES6在Math对象上新增了Math.cbrt(),trunc(),hypot()等等较多的科学计数法运算方法,可以更加全面的进行立方根、求和立方根等等科学计算。
八、问:举一些ES6对Object类型做的常用升级优化?(重要)
答:
1、优化部分:
a. 对象属性变量式声明。ES6可以直接以变量形式声明对象属性或者方法,。比传统的键值对形式声明更加简洁,更加方便,语义更加清晰。
-
let [apple, orange] = ['red appe', 'yellow orange'];
-
let myFruits = {apple, orange}; // let myFruits = {apple: 'red appe', orange: 'yellow orange'};
-
复制代码
尤其在对象解构赋值(见优化部分b.)或者模块输出变量时,这种写法的好处体现的最为明显:
-
let {keys, values, entries} = Object;
-
let MyOwnMethods = {keys, values, entries}; // let MyOwnMethods = {keys: keys, values: values, entries: entries}
-
复制代码
可以看到属性变量式声明属性看起来更加简洁明了。方法也可以采用简洁写法:
-
let es5Fun = {
-
method: function(){}
-
};
-
let es6Fun = {
-
method(){}
-
}
-
复制代码
b. 对象的解构赋值。 ES6对象也可以像数组解构赋值那样,进行变量的解构赋值:
-
let {apple, orange} = {apple: 'red appe', orange: 'yellow orange'};
-
复制代码
c. 对象的扩展运算符(...)。 ES6对象的扩展运算符和数组扩展运算符用法本质上差别不大,毕竟数组也就是特殊的对象。对象的扩展运算符一个最最常用也最好用的用处就在于可以轻松的取出一个目标对象内部全部或者部分的可遍历属性,从而进行对象的合并和分解。
-
let {apple, orange, ...otherFruits} = {apple: 'red apple', orange: 'yellow orange', grape: 'purple grape', peach: 'sweet peach'};
-
// otherFruits {grape: 'purple grape', peach: 'sweet peach'}
-
// 注意: 对象的扩展运算符用在解构赋值时,扩展运算符只能用在最有一个参数(otherFruits后面不能再跟其他参数)
-
let moreFruits = {watermelon: 'nice watermelon'};
-
let allFruits = {apple, orange, ...otherFruits, ...moreFruits};
-
复制代码
d. super 关键字。ES6在Class类里新增了类似this的关键字super。同this总是指向当前函数所在的对象不同,super关键字总是指向当前函数所在对象的原型对象。
2、升级部分:
a. ES6在Object原型上新增了is()方法,做两个目标对象的相等比较,用来完善'==='方法。'==='方法中NaN === NaN //false
其实是不合理的,Object.is修复了这个小bug。(Object.is(NaN, NaN) // true
)
b. ES6在Object原型上新增了assign()方法,用于对象新增属性或者多个对象合并。
-
const target = { a: 1 };
-
const source1 = { b: 2 };
-
const source2 = { c: 3 };
-
Object.assign(target, source1, source2);
-
target // {a:1, b:2, c:3}
-
复制代码
注意: assign合并的对象target只能合并source1、source2中的自身属性,并不会合并source1、source2中的继承属性,也不会合并不可枚举的属性,且无法正确复制get和set属性(会直接执行get/set函数,取return的值)。
c. ES6在Object原型上新增了getOwnPropertyDescriptors()方法,此方法增强了ES5中getOwnPropertyDescriptor()方法,可以获取指定对象所有自身属性的描述对象。结合defineProperties()方法,可以完美复制对象,包括复制get和set属性。
d. ES6在Object原型上新增了getPrototypeOf()和setPrototypeOf()方法,用来获取或设置当前对象的prototype对象。这个方法存在的意义在于,ES5中获取设置prototype对像是通过__proto__属性来实现的,然而__proto__属性并不是ES规范中的明文规定的属性,只是浏览器各大产商“私自”加上去的属性,只不过因为适用范围广而被默认使用了,再非浏览器环境中并不一定就可以使用,所以为了稳妥起见,获取或设置当前对象的prototype对象时,都应该采用ES6新增的标准用法。
d. ES6在Object原型上还新增了Object.keys(),Object.values(),Object.entries()方法,用来获取对象的所有键、所有值和所有键值对数组。
九、问:举一些ES6对Function函数类型做的常用升级优化?(重要)
答:
1、优化部分:
a. 箭头函数(核心)。箭头函数是ES6核心的升级项之一,箭头函数里没有自己的this,这改变了以往JS函数中最让人难以理解的this运行机制。主要优化点:
Ⅰ. 箭头函数内的this指向的是函数定义时所在的对象,而不是函数执行时所在的对象。ES5函数里的this总是指向函数执行时所在的对象,这使得在很多情况下this的指向变得很难理解,尤其是非严格模式情况下,this有时候会指向全局对象,这甚至也可以归结为语言层面的bug之一。ES6的箭头函数优化了这一点,它的内部没有自己的this,这也就导致了this总是指向上一层的this,如果上一层还是箭头函数,则继续向上指,直到指向到有自己this的函数为止,并作为自己的this。
Ⅱ. 箭头函数不能用作构造函数,因为它没有自己的this,无法实例化。
Ⅲ. 也是因为箭头函数没有自己的this,所以箭头函数 内也不存在arguments对象。(可以用扩展运算符代替)
b. 函数默认赋值。ES6之前,函数的形参是无法给默认值得,只能在函数内部通过变通方法实现。ES6以更简洁更明确的方式进行函数默认赋值。
-
function es6Fuc (x, y = 'default') {
-
console.log(x, y);
-
}
-
es6Fuc(4) // 4, default
-
复制代码
2、升级部分:
ES6新增了双冒号运算符,用来取代以往的bind,call,和apply。
-
foo::bar;
-
// 等同于
-
bar.bind(foo);
-
foo::bar(...arguments);
-
// 等同于
-
bar.apply(foo, arguments);
-
复制代码
十、问:Symbol是什么,有什么作用?
答: Symbol是ES6引入的第七种原始数据类型,所有Symbol()生成的值都是独一无二的,可以从根本上解决对象属性太多导致属性名冲突覆盖的问题。对象中Symbol()属性不能被for...in遍历,但是也不是私有属性。
十一、问:Set是什么,有什么作用?
答: Set是ES6引入的一种类似Array的新的数据结构,Set实例的成员类似于数组item成员,区别是Set实例的成员都是唯一,不重复的。这个特性可以轻松地实现数组去重。
十二、问:Map是什么,有什么作用?
答: Map是ES6引入的一种类似Object的新的数据结构,Map可以理解为是Object的超集,打破了以传统键值对形式定义对象,对象的key不再局限于字符串,也可以是Object。可以更加全面的描述对象的属性。
十三、问:Proxy是什么,有什么作用?
答: Proxy是ES6新增的一个构造函数,可以理解为JS语言的一个代理,用来改变JS默认的一些语言行为,包括拦截默认的get/set等底层方法,使得JS的使用自由度更高,可以最大限度的满足开发者的需求。比如通过拦截对象的get/set方法,可以轻松地定制自己想要的key或者value。下面的例子可以看到,随便定义一个myOwnObj的key,都可以变成自己想要的函数。
-
function createMyOwnObj() {
-
//想把所有的key都变成函数,或者Promise,或者anything
-
return new Proxy({}, {
-
get(target, propKey, receiver) {
-
return new Promise((resolve, reject) => {
-
setTimeout(() => {
-
let randomBoolean = Math.random() > 0.5;
-
let Message;
-
if (randomBoolean) {
-
Message = `你的${propKey}运气不错,成功了`;
-
resolve(Message);
-
} else {
-
Message = `你的${propKey}运气不行,失败了`;
-
reject(Message);
-
}
-
}, 1000);
-
});
-
}
-
});
-
}
-
let myOwnObj = createMyOwnObj();
-
myOwnObj.hahaha.then(result => {
-
console.log(result) //你的hahaha运气不错,成功了
-
}).catch(error => {
-
console.log(error) //你的hahaha运气不行,失败了
-
})
-
myOwnObj.wuwuwu.then(result => {
-
console.log(result) //你的wuwuwu运气不错,成功了
-
}).catch(error => {
-
console.log(error) //你的wuwuwu运气不行,失败了
-
})
-
复制代码
十四、问:Reflect是什么,有什么作用?
答: Reflect是ES6引入的一个新的对象,他的主要作用有两点,一是将原生的一些零散分布在Object、Function或者全局函数里的方法(如apply、delete、get、set等等),统一整合到Reflect上,这样可以更加方便更加统一的管理一些原生API。其次就是因为Proxy可以改写默认的原生API,如果一旦原生API别改写可能就找不到了,所以Reflect也可以起到备份原生API的作用,使得即使原生API被改写了之后,也可以在被改写之后的API用上默认的API。
十五、问:Promise是什么,有什么作用?
答: Promise是ES6引入的一个新的对象,他的主要作用是用来解决JS异步机制里,回调机制产生的“回调地狱”。它并不是什么突破性的API,只是封装了异步回调形式,使得异步回调可以写的更加优雅,可读性更高,而且可以链式调用。
十六、问:Iterator是什么,有什么作用?(重要)
答: Iterator是ES6中一个很重要概念,它并不是对象,也不是任何一种数据类型。因为ES6新增了Set、Map类型,他们和Array、Object类型很像,Array、Object都是可以遍历的,但是Set、Map都不能用for循环遍历,解决这个问题有两种方案,一种是为Set、Map单独新增一个用来遍历的API,另一种是为Set、Map、Array、Object新增一个统一的遍历API,显然,第二种更好,ES6也就顺其自然的需要一种设计标准,来统一所有可遍历类型的遍历方式。Iterator正是这样一种标准。或者说是一种规范理念。
就好像JavaScript是ECMAScript标准的一种具体实现一样,Iterator标准的具体实现是Iterator遍历器。Iterator标准规定,所有部署了key值为[Symbol.iterator],且[Symbol.iterator]的value是标准的Iterator接口函数(标准的Iterator接口函数: 该函数必须返回一个对象,且对象中包含next方法,且执行next()能返回包含value/done属性的Iterator对象)的对象,都称之为可遍历对象,next()后返回的Iterator对象也就是Iterator遍历器。
-
//obj就是可遍历的,因为它遵循了Iterator标准,且包含[Symbol.iterator]方法,方法函数也符合标准的Iterator接口规范。
-
//obj.[Symbol.iterator]() 就是Iterator遍历器
-
let obj = {
-
data: [ 'hello', 'world' ],
-
[Symbol.iterator]() {
-
const self = this;
-
let index = 0;
-
return {
-
next() {
-
if (index < self.data.length) {
-
return {
-
value: self.data[index++],
-
done: false
-
};
-
} else {
-
return { value: undefined, done: true };
-
}
-
}
-
};
-
}
-
};
-
复制代码
ES6给Set、Map、Array、String都加上了[Symbol.iterator]方法,且[Symbol.iterator]方法函数也符合标准的Iterator接口规范,所以Set、Map、Array、String默认都是可以遍历的。
-
//Array
-
let array = ['red', 'green', 'blue'];
-
array[Symbol.iterator]() //Iterator遍历器
-
array[Symbol.iterator]().next() //{value: "red", done: false}
-
//String
-
let string = '1122334455';
-
string[Symbol.iterator]() //Iterator遍历器
-
string[Symbol.iterator]().next() //{value: "1", done: false}
-
//set
-
let set = new Set(['red', 'green', 'blue']);
-
set[Symbol.iterator]() //Iterator遍历器
-
set[Symbol.iterator]().next() //{value: "red", done: false}
-
//Map
-
let map = new Map();
-
let obj= {map: 'map'};
-
map.set(obj, 'mapValue');
-
map[Symbol.iterator]().next() {value: Array(2), done: false}
-
复制代码
十七、问:for...in 和for...of有什么区别?
答: 如果看到问题十六,那么就很好回答。问题十六提到了ES6统一了遍历标准,制定了可遍历对象,那么用什么方法去遍历呢?答案就是用for...of。ES6规定,有所部署了载了Iterator接口的对象(可遍历对象)都可以通过for...of去遍历,而for..in仅仅可以遍历对象。
这也就意味着,数组也可以用for...of遍历,这极大地方便了数组的取值,且避免了很多程序用for..in去遍历数组的恶习。
上面提到的扩展运算符本质上也就是for..of循环的一种实现。
十八、Generator函数是什么,有什么作用?
答: 如果说JavaScript是ECMAScript标准的一种具体实现、Iterator遍历器是Iterator的具体实现,那么Generator函数可以说是Iterator接口的具体实现方式。
执行Generator函数会返回一个遍历器对象,每一次Generator函数里面的yield都相当一次遍历器对象的next()方法,并且可以通过next(value)方法传入自定义的value,来改变Generator函数的行为。
Generator函数可以通过配合Thunk 函数更轻松更优雅的实现异步编程和控制流管理。
十九、async函数是什么,有什么作用?
答: async函数可以理解为内置自动执行器的Generator函数语法糖,它配合ES6的Promise近乎完美的实现了异步编程解决方案。
二十、Class、extends是什么,有什么作用?
答: ES6 的class可以看作只是一个ES5生成实例对象的构造函数的语法糖。它参考了java语言,定义了一个类的概念,让对象原型写法更加清晰,对象实例化更像是一种面向对象编程。Class类可以通过extends实现继承。它和ES5构造函数的不同点:
a. 类的内部定义的所有方法,都是不可枚举的。
-
///ES5
-
function ES5Fun (x, y) {
-
this.x = x;
-
this.y = y;
-
}
-
ES5Fun.prototype.toString = function () {
-
return '(' + this.x + ', ' + this.y + ')';
-
}
-
var p = new ES5Fun(1, 3);
-
p.toString();
-
Object.keys(ES5Fun.prototype); //['toString']
-
//ES6
-
class ES6Fun {
-
constructor (x, y) {
-
this.x = x;
-
this.y = y;
-
}
-
toString () {
-
return '(' + this.x + ', ' + this.y + ')';
-
}
-
}
-
Object.keys(ES6Fun.prototype); //[]
-
复制代码
b.ES6的class类必须用new命令操作,而ES5的构造函数不用new也可以执行。
c.ES6的class类不存在变量提升,必须先定义class之后才能实例化,不像ES5中可以将构造函数写在实例化之后。
d.ES5 的继承,实质是先创造子类的实例对象this,然后再将父类的方法添加到this上面。ES6 的继承机制完全不同,实质是先将父类实例对象的属性和方法,加到this上面(所以必须先调用super方法),然后再用子类的构造函数修改this。
二十一、module、export、import是什么,有什么作用?
答: module、export、import是ES6用来统一前端模块化方案的设计思路和实现方案。export、import的出现统一了前端模块化的实现方案,整合规范了浏览器/服务端的模块化方法,用来取代传统的AMD/CMD、requireJS、seaJS、commondJS等等一系列前端模块不同的实现方案,使前端模块化更加统一规范,JS也能更加能实现大型的应用程序开发。
import引入的模块是静态加载(编译阶段加载)而不是动态加载(运行时加载)。
import引入export导出的接口值是动态绑定关系,即通过该接口,可以取到模块内部实时的值。
二十二、日常前端代码开发中,有哪些值得用ES6去改进的编程优化或者规范?
答:
1、常用箭头函数来取代var self = this;
的做法。
2、常用let取代var命令。
3、常用数组/对象的结构赋值来命名变量,结构更清晰,语义更明确,可读性更好。
4、在长字符串多变量组合场合,用模板字符串来取代字符串累加,能取得更好地效果和阅读体验。
5、用Class类取代传统的构造函数,来生成实例化对象。
6、在大型应用开发中,要保持module模块化开发思维,分清模块之间的关系,常用import、export方法。
作者:StevenLikeWatermelon
链接:https://juejin.im/post/5c061ed2f265da61357258ee
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1、变量在ES6之前,变量声明关键字:varvar的缺点: (1)var可以多次声明同一个变量--在其他编程语言是没办法想象的vara=0;vara=99; (2)var会造成变量提升(f...博文来自: barret007的博客
1.es6熟悉吗,说几个es6的新增方法(1)新增声明命令let和const在es6中通常用 let 和 const 来声明,let 表示变量、const 表示常量。特点:let 和 const 都是...博文来自: sinat_36174237的博客
部分内容来源于网络 主要内容包括:数据类型,变量和常量,数组和常用方法,本地存储,关于异步处理:Generator async promise 的区别,关于ES6兼容与优化 数据类型1,介绍js的...博文来自: cmy0816的博客
1.es6新特性,哪些在项目中使用举例说明letconst解构箭头函数Set去重新增数据类型Symbol模板字符串``类怎么实现继承模块化promiseasync/await2.varletconst...博文来自: 脑瓜疼儿的博客
1.rem的理解:(关于页面的适配--手写)https://mp.weixin.qq.com/s/-22kMEXf0S-1okqXw40OqQrem的62%是个什么意思16px=1rem1px=62....博文来自: jasonjkj的博客
JavaScript中基本数据类型与引用数据类型JavaScript中共有6种基本数据类型:Undefined、Null、Boolean、Number、String、Symbol(newinES6)!...博文来自: u011135887的博客
1.变量声明let和const2.模板字符串3.函数4.拓展的对象功能5.更方便的数据访问--解构6.SpreadOperator展开运算符7.import和export8.Promise9.Gene...博文来自: ferrysoul的博客
学习过程中每个人有每个人不同的习惯,我喜欢学完一个知识点再用脑图整理出知识点。这样回顾就有思路。看的顺序是从右上角开始顺时针下面的图片是ES6要掌握的知识点,如果是要从事Vue、React这些都掌握了...博文来自: Ultraman_and_monster的博客
ES6知识点归纳目录博客导航ES6之let、const、var区别ES6之(…)用法ES6之字符串模板ES6之变量的解构赋值...博文来自: Dream_Lee的博客
全面掌握ES6引入的新特性,为以后的框架奠定基础,比如vue中会大量使用es6的语法,希望大家学习es6中的语法在以后的开发过程中能提高效率学院讲师: 张鹏
这篇文章主要解释一下标题的问题,很多不了解ES6的人都有这样的疑问。什么TM的是ES6?什么是ES6呢,简单通俗的说就是netscape(网景)公司创造了javascript这个脚本语言,主要是用来做...博文来自: 谁说学美术将来只能卖画了,我也有自己的梦想。
首先我们来看一下ES是什么?全称为ECMAScript,是JavaScript语言的核心,它规定了js的组成部分:语法、类型、语句、关键字、保留字、操作符、对象。下面直奔两者不同:1.系统库的引用...博文来自: 杜小白的博客
570篇文章
排名:517
233篇文章
排名:5000+
203篇文章
排名:5000+
446篇文章
排名:583
VUE面试题v-show与v-if区别 动态绑定class的方法 计算属性和watch的区别 怎样理解单向数据流 keep-alive 自定义组件的语法糖v-model是怎样实现的 生命周期 组件通信...博文来自: 大灰狼的小绵羊哥哥的博客
Python标识符在Python里,标识符有字母、数字、下划线组成。在Python中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。Python中的标识符是区分大小写的。以下划线开...博文来自: sxyyu1的博客
超全局变量$_SERVER['SERVER_ADDR']服务器IP地址$_SERVER['QUERY_STRING']?后面的一大串$_SERVER['REMOTE_ADDR']客户端IP地址 $_S...博文来自: qq_36346877的博客
JavaSE复习总结(一)基础常识1.JVM,JRE,JDKJRE=JVM+相关类库JDK=JRE+工具 2.下载安装jdk,设置path环境变量3.第一个java程序HelloWorld1)创建.j...博文来自: wangligong的博客
跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽。切不可跟风,看到同事一个个都走了,自己也盲目的面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的轨迹...博文来自: 总有些事,值得你去努力
原文地址:http://www.cnblogs.com/tornadomeet/p/3395593.html 前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选...博文来自: u012656566的博客
https://blog.csdn.net/WJ930708/article/details/79904277https://blog.csdn.net/u011135887/article/deta...博文来自: qq_21428081的博客
箭头函数的介绍箭头函数是es6当中对函数的一种全新表示法。其将函数的简洁性发扬到了极致!先来看一个最简单的箭头函数:letfn=v=&gt;v;console.log(fn("好酷的...博文来自: 张培跃的个人博客
项目中对应的代码github的地址:https://github.com/Barretem/ES6_demo_list5、面向对象es5类以及类的继承//父类functionUser(name,age...博文来自: barret007的博客
面试的过程中提到了symbol,很悲剧我答得超级差,所以晚上回来整理下,遇到不会的就要立刻补救!以后关于ES6的我也都整理在此~Symbol1.symbol独一无二,用于避免命名冲突,所以我们可以用于...博文来自: weixin_40322503的博客
1. javascript的typeof返回哪些数据类型.答案:string,boolean,number,undefined,function,object2. 例举3种强制类型转换和2种隐式类型转...博文来自: 曲小强
2018最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)
近期总结一一些面试题都是企业的面试题笔记题感觉薪资10k下的都会出笔试题特别高的薪资都是直接技术面试或者是现场编程总结很多人的面试题,后期会对于单个知识点再说笔记详细讲解。部分都是百度的答案,不是特全...博文来自: xm1037782843的博客
1,MVC(Model-View-Controller)M-Model:数据保存V-View:用户界面C-Controller:业务逻辑MVC,用户操作&gt;View(负责接受用户的输入操作...博文来自: xm1037782843的博客
react难点:组件怎么拆分?单一原则,只干一件事,功能简单,不复用不拆,考虑迭代数据放在哪里?【数据】props:数据传递state:私有状态(用户输入、默认属性)数据尽量给顶层组件为什么用setS...博文来自: weixin_40821790的博客
一、对迭代器进行切片#!/usr/bin/envpython#-*-coding:utf-8-*-fromitertoolsimportislice#islice(iterable,[start,]s...博文来自: ******* ▄︻┻┳═一 *******
本文来自作者 de,light 在 GitChat 上分享「机器学习面试干货精讲」,「阅读原文」查看交流实录。「文末高能」编辑|哈比序言本文尽可能的不涉及到繁杂的数学公式,把面试中常问的模型核心点,用...博文来自: GitChat技术杂谈
目录:一、基础知识 1.C/C++基础 2.STL基础 3.数据结构与算法基础 4.计算机网络基础 5.操作系统基础 6.数据库基础二、深入底层原理 1.ST...博文来自: _ACME_的博客
下面我将会慢慢的介绍一些常用的ES6语法特性,这其中有很大一部分引用于阮一峰老师的《ECMAScript6入门》,算是自己对这本书的一个笔记吧。1、let和const命令ES5只有两种声明变量的方法:...博文来自: low神
1前言由于我在简历中写我了解es6,所以杭州有赞的面试官问了我很多es6的问题es6是JS的国际标准化组织在15年推出的新版本JSes6的详细介绍可以看阮一峰老师的开源书籍:http://es6.ru...博文来自: 阿超的博客
es6新特性letconstclass,extends,superES6的继承机制,实质是先创造父类的实例对象this(所以必须先调用super方法),然后再用子类的构造函数修改this。constr...博文来自: 小仙女儿的魔仙堡
面试题情景:vara=[];for(vari=0;i博文来自: xiaoyu的博客
Promise想必大家都十分熟悉,想想就那么几个api,可是你真的了解Promise吗?本文根据Promise的一些知识点总结了十道题,看看你能做对几道。以下promise均指代Promise实例,环...博文来自: 眼里长着太阳,笑里全是坦荡
Python爬虫人工智能教程:www.python88.cn编程资源网:www.python66.cn相关资料和一些python教程都传到Python社区网站:www.python88.cn有兴趣的同...博文来自: QQ_2296622142的博客
1、用链表表示线性表的优点是(便于插入和删除操作)2、单链表中,增加头结点的目的是(方便运算的实现)3、栈和队列的共同特点是(只允许在端点处插入和删除元素)4、栈通常采用的两种存储结构是(线性存储结构...博文来自: Bebr的博客
第一章绪论1.1框架数据结构:基本概念(数据、元素、对象和ADT)逻辑结构(集合、线性、树形和图形)存储结构(顺序、链式、索引和散列)算法:基本概念:算法、特性和评价算法分析:时间和空间复杂度1.2大...博文来自: algzjh的博客
整型和长整型的区别在早期的计算机,16编译器,整型是16位,长整型是32位的。如今,在C99规定整型和长整型都是32位。 2.编译系统的四个步骤:预处理,编译,汇编,链接 3.For(;;)和wh...博文来自: qq_38365242的博客
前言自从ES6发布以来,就受到了广大开发者的欢迎。它的新特性解决了很多实际开发中的痛点,并且使得JavaScript逐步成为一门能够开发大型企业应用的编程语言,基于这种技术环境下,很多公司都将ES6视...博文来自: AGGirl的专栏
ES6复习1.变量声明新增let和const,let声明变量,const声明常量let和const都不能重复声明let和const都不存在变量提升let和const都是块级作用域,而不是var的函数作...博文来自: weixin_34114823的博客
参考网站:https://blog.csdn.net/jasonjkj/article/details/80789360class及class的继承,prototype.与__proto__的概念,m...博文来自: juse__we的博客
var可以多次声明同一个变量--在其他编程语言是没办法想象的vara=0;vara=99;(2)var会造成变量提升(functionrr(){if(true){vara=666;}console.l...博文来自: xm1037782843的博客
1.es6新特性2.简单描述下promise博文来自: u012967454的博客
ES6面试、复习干货知识点汇总(全) - 大灰狼的小绵羊哥..._CSDN博客
ES6常用知识点总结 - 大灰狼的小绵羊哥哥的博客 - CSDN博客
ES6常用知识点总结2019年04月15日 09:30:17 大灰狼的小绵羊哥哥 阅读数:520...做了一下总结,将一些觉得对自己目前有用的东西整理出来方便日后再来巩固复习。...
C/C++常见面试知识点总结附面试真题----20190407更新
以下内容部分整理自网络,部分为自己面试的真题。第一部分:计算机基础1.C/C++内存有哪几种类型?C中,内存分为5个区:堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全...博文来自: 生命在于折腾!
前言这篇博客是我之前的一个礼拜复习总结的各种知识点,可能有些多,其中的一些观点是来自于《EffectiveC++》和《C++编程思想》,这两本书中的知识给了我很多启发,也让我懂得了许多不一样的知识点,...博文来自: 努力努力再努力的博客
大数据特点:五个主要技术特点:5VVolume(大体量):即可从数百TB到数十数百PB、甚至EB规模。Variety(多样性):即大数据包括各种格式和形态的数据。Velocity(时效性):即很多大数...博文来自: 白得不能再白
目录:一,计算机概述二,物理层三,数据链路层四,网络层五,运输层六,应用层一,计算机概述(1),基本术语结点(node):网络中的结点可以是计算机,集线器,交换机或路由器等。链路(link):从一个结...博文来自: 不忘初心
四大组件:Activity:生命周期:启动模式:standard、singleTop、singleTask、singleInstance任务栈:前台任务栈、后台任务栈TaskAffinity+sing...博文来自: 小二的茶馆
一、什么是MVVM?MVVM是Model-View-ViewModel的缩写。MVVM是一种设计思想。Model层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View代表UI组件,...博文来自: 分享我的点点滴滴,在成长路上与你同行!
mybatis一级缓存(session cache)引发的问题
mybatis一级缓存(session cache)引发的问题博文来自: flysharkym的专栏
spring boot +WebSocket(三) 点对点式
前两篇博客演示了广播式的websocket 推送。 广播式有自己的应用场景,但是广播式不能解决我门一个常见的场景,即消息由谁发送、由谁接收的问题。本例中演示了一个简单的聊天室程序。例子中只有两个用户...博文来自: 哎幽的成长
4、图纸统计工具 软件介绍:该工具可以统计已打开AutoCAD图纸模型空间中符合预订要求的实体的数量,进而可用于统计各项目的数量。...博文来自: jellymiki的博客
深度卷积网络 涉及问题: 1.每个图如何卷积: (1)一个图如何变成几个? (2)卷积核如何选择? 2.节点之间如何连接? 3.S2-C3如何进行分配? 4.16-...博文来自: 江南研习社
第二节 Signal和Slot的粘合剂 如果要连接一个Signal和Slot我们会用connect函数,下面我们就看一下connect是如何把Signal和Slot粘合在一起的。 以下是conn...博文来自: SuperFPE的专栏
tensorflow在ubuntu系统上按照官方文档安装起来相对容易,在centos上由于没有apt-get( yum)相对困难一些,本文会提到一些安装过程中遇到的一些坑及解放方案。...博文来自: zhangweijiqn的专栏
以下流程是根据博客http://blog.csdn.net/zb1165048017/article/details/52447567;并根据自己的实际经验而成,亲测可用。 以下路径多是绝对路径,需要...博文来自: xll_bit的博客
python 将目下的excel全部转xml文件到指定的目录
上一篇文章说了python如何解析excel文件博文来自: waylyn_wu的专栏
mnist数据集介绍、读取、保存成图片 1、mnist数据集介绍: MNIST数据集是一个手写体数据集,简单说就是一堆这样东西 MNIST的官网地址是 MNIST; 通过阅读官网我们可以知...博文来自: YF_Li123的博客
一、信道的定义与调制信道的数学模型 1.信道的定义与分类 信道(Channel)是指以传输媒质为基础的信号通道。根据新到的定义,如果信道仅是指信号的传输媒质,这种信道称为狭义信道;如果...博文来自: Seth的博客
前段时间看了一些关于LSTM方面的论文,一直准备记录一下学习过程的,因为其他事儿,一直拖到了现在,记忆又快模糊了。现在赶紧补上,本文的组织安排是这样的:先介绍rnn的BPTT所存在的问题,然后介绍最初...博文来自: 天道酬勤,做一个务实的理想主义者
强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量 使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点) 定义: int Ti...博文来自: 九野的博客
jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自: Websites
greenDAO是Android经常使用的ORM开源框架,ORM(Object-Relation-Mapping)对象关系映射,它可以帮助 Android 开发者快速将Java对象映射到SQLite数...博文来自: DMT专栏
关于SpringBoot bean无法注入的问题(与文件包位置有关)
问题场景描述整个项目通过Maven构建,大致结构如下: 核心Spring框架一个module spring-boot-base service和dao一个module server-core 提供系统...博文来自: 开发随笔
plsql的命令(command)窗口与sql窗口有什么区别20170620
command窗口是命令窗口,即为sqplus窗口,有命令提示符,识别sqlplus命令,基本的命令都可以执行 sql仅可执行DDL、select、DML等...博文来自: Ape55的博客
Web前端面试指导(三十):JavaScript有几种类型的值?你能画一下他们的内存图吗?
题目点评 数据类型是所有程序都会涉及到的,是计算机语言比较基础知识,这种问题被问到的可能性其实并不大,这样的题目只要花点时间把它记下来就好了,难易程度一般。 两大类: 栈:原始数据类型(Und...博文来自: 雄领IT的专栏
4 软件设计 软件设计部分主要包括uboot移植、内核编译、系统移植、设备驱动编程、应用程序编程(QT编程、mysql数据库编程、控制系统编程)、各个模块的功能函数(部分是在windows下面的...博文来自: 求是07的专栏
上一篇文章讲解了SNMP的基本架构,本篇文章将重点分析SNMP报文,并对不同版本(SNMPv1、v2c、v3)进行区别! 四、SNMP协议数据单元 在SNMP管理中,管理站(NMS)和代理(Age...博文来自: 假装在纽约
魔兽争霸3冰封王座1.24e 多开联机补丁 信息发布与收集点
连续特征进行离散化处理。博文来自: hero_fantao的专栏
Qt 5.8.0在msvc2015方式下的静态编译记录本次记录把Qt5.8.0源码在msvc2015community版下静态编译的过程。 1、准备工作 2、配置Qt的Makefile文件 3、编译Q...博文来自: csdn64的博客
一、概述最近在springboot项目引入thymeleaf模板时,使用非严格标签时,运行会报错。默认thymeleaf模板对html5标签是严格检查的。二、在项目中加NekoHTML库在Maven中...博文来自: Luck_ZZ的博客
Spring Boot MyBatis 动态数据源切换、多数据源,读写分离
项目地址:https://github.com/helloworlde/SpringBoot-DynamicDataSource/tree/dev 在 Spring Boot 应用中使用到了 MyB...博文来自: HelloWood
设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
mysql关联查询两次本表 native底部 react extjs glyph 图标 java学习知识点汇总 python干货教程
Vue 面试中常问知识点整理 - 大灰狼的小绵羊哥哥的博客 - CSDN博客
JS面试题总结(含ES6) - cmy0816的博客 - CSDN博客
粉丝
3238
喜欢
1136
评论
605
等级:
访问:
698万+
积分:
6万+
排名:
60
勋章:
最新文章
个人分类
- 【Vue2.0点滴知识 】518篇
- 【React.js点滴知识 】323篇
- 【React-Native2点滴知识 】654篇
- 【Android2点滴知识 】25篇
- 【Android点滴知识 】97篇
- 【Flutter点滴知识 】36篇
- 【Javascript点滴知识 】475篇
- 【Jquery点滴知识 】50篇
- 【前端面试点滴知识 】266篇
- 【Webpack点滴知识 】187篇
- 【HTML5+CSS3点滴知识 】114篇
- 【Sea.js+Require.js点滴知识 】8篇
- 【Redux Mobx Saga 点滴知识 】170篇
- 【Gulp自动化工具点滴知识 】28篇
- 【Node.js Koa点滴知识 】61篇
- 【Weex点滴知识 】12篇
- 【ES678点滴知识 】94篇
- 【Vuex点滴知识 】40篇
- 【Vue-Router点滴知识 】46篇
- 【Vue点滴知识 】86篇
- 【微信小程序点滴知识 】106篇
- 【微信小程序2点滴知识 】123篇
- 【React-Router点滴知识 】54篇
- 【React-Native点滴知识 】137篇
- 【iOS点滴知识 】25篇
- 【Java点滴知识 】1篇
- 【工具点滴知识 】16篇
- 【性能优化点滴知识】2篇
展开
归档
- 2019年5月 60篇
- 2019年4月 142篇
- 2019年3月 148篇
- 2019年2月 34篇
- 2019年1月 15篇
- 2018年12月 104篇
- 2018年11月 212篇
- 2018年10月 220篇
- 2018年9月 102篇
- 2018年8月 122篇
- 2018年7月 80篇
- 2018年6月 82篇
- 2018年5月 16篇
- 2018年4月 41篇
- 2018年3月 43篇
- 2018年2月 8篇
- 2018年1月 20篇
- 2017年12月 58篇
- 2017年11月 37篇
- 2017年10月 44篇
- 2017年9月 108篇
- 2017年8月 98篇
- 2017年7月 101篇
- 2017年6月 99篇
- 2017年5月 137篇
- 2017年4月 209篇
- 2017年3月 392篇
- 2017年2月 324篇
- 2017年1月 117篇
- 2016年12月 150篇
- 2016年11月 5篇
- 2016年10月 25篇
- 2016年9月 88篇
- 2016年8月 86篇
展开
热门文章
- vue-router 2.0 常用基础知识点之router.push()
阅读数 121087
- 理解 $nextTick 的作用
阅读数 106530
- 使用Vue-Router 2实现路由功能
阅读数 89617
- Vuex简单入门
阅读数 87687
- axios在vue中的简单配置与使用
阅读数 76274
最新评论
- 在Vue项目中使用Echarts(...
jsqfengbao:我的地图为啥没显示出来,也没报错
- RN与原生交互(二)——数据传递
zbz:非常好的一篇文章,可是,我封装了2个ReactNative组件,如何让这两个组件之间传递数据呢? 请博主指点一下迷津
- webpack4.x 入门一篇足矣
csdn6107:安装webpack-dev-serve命令是 npm install webpack-dev-server --save-dev 不是 npm install webpack-dev-serve --save-dev,少了个r
- Vue项目自动转换 px 为 re...
hammer1010:请问博主: "rootValue": 32, 为什么rootValue设为32 假设设计稿750宽 根元素大小设置多少? rootValue为75吗?[code=javascript] [/code]
- Koa2 进阶学习笔记
qq_38269964:先插个眼
程序人生
CSDN资讯
客服论坛400-660-0108
工作时间 8:30-22:00
©1999-2019 北京创新乐知网络技术有限公司
-
1
-