最近这个文章很火,列了【合格】前端工程师须要掌握的技能表,看到做者一直不断自省和学习来保持竞争力,同为前端工程师深感惭愧,故写下此文简要回答一下文章里提到的技术问题,技术通常,你们仅仅当作参考就成,文章很长会分多篇来写。前端
传送门 一名【合格】前端工程师的自检清单git
JavaScript
规定了几种数据类型
7种,根据堆栈储存方式的不一样分为简单类型和复杂类型es6
string
、number
、boolean
、null
、undefined
、symbol
(ES6新增,表示独一无二的值)object
JavaScript
对象的底层结构是什么
不甚了解,不敢妄言github
Symbol
类型在实际开发中的应用,手写Symbol
Symbol
表示一个独一无二的值,若是咱们使用了一个他人提供的对象,要为此对象添加方法,那么必须保证属性名不能冲突,使用Symbol
就能很好的保证这一点,Symbol
与任何值都不相等!这个东西了解不深,传送门-ES6标准入门-Symobl数组
JavaScript
中的变量具体储存形式
变量的储存方式取决于变量的类型是基本类型仍是引用类型安全
来源
:《JavaScript高级程序设计》69页基本类型对应的内置对象,以及他们之间的装箱拆箱操做
这个说的是基本包装类型,我也理解不深,直接看《JavaScript高级程序设计》119页前端工程师
理解值类型和引用类型
这个和4同样,值类型就是基本类型,引用类型就是复杂类型函数
null
和undefined
的区别
null
表示空对象指针,将null赋值给变量,就表示该变量指向空对象
undefined
表示未定义,声明一个变量但不初始化,那么它的值就是undefined
null
主要表示一个变量尚未真正保存对象的时候,它的值就应该为null
,这是意料之中的空,而undefined
一般表示意料以外的内容,如未初始化的变量,通常来讲咱们不该该显式的使用undefined
来源
《JavaScript高级程序设计》24页post
至少能够说出三种判断JavaScript
数据类型的方式,以及他们的优缺点,如何准确的判断数组类型学习
typeof
操做符,能够判断基本数据类型,对于引用数据类型全都返回Object
instanceof
操做符,obj instanceof Object
检测Object.prototype
是否存在于参数obj
的原型链上,主要用来判断变量是不是某个构造函数的实例,可是Object
是全部对象的原型,因此在obj instanceof Object
中,不管参数obj
是数组仍是函数都会返回true
constructor
是prototype
对象上的属性,指向构造函数。根据实例对象寻找属性的顺序,若实例对象上没有实例属性或方法时,就去原型链上寻找,所以,实例对象也是能使用constructor
属性的,一样的这个也只能输出构造函数如需判断基本数据类型,使用typeof
,判断引用类型用instanceof
和constructor
,实际上全部引用类型都是对象,只不过构造函数不一样罢了,强行判断引用类型,要么只是判断常见的几种引用类型好比数组,函数,Date,正则等等,要么只能输出构造函数
准确判断数组类型使用es5提供的方法Array.isArray(value)
来源
《JavaScript高级程序设计》83页,一整章
可能发生隐式类型转换的场景以及转换原则,应如何避免或巧妙应用
隐式转换通常说的是Boolean
的转换
true
,空字符串会转换成false
true
,0会转换成false
true
固然Numebr
也会发生隐式转换,不过这个通常用不到,也很简单 来源
《JavaScript高级程序设计》26页
出现小数精度丢失的缘由,JavaScript能够存储的最大数字、最大安全数字,JavaScript处理大数字的方法、避免精度丢失的方法
JavaScript
使用了IEEE 754
规范,二进制储存十进制的小数时不能完整的表示小数Number.MAX_VALUE
等于1.7976931348623157e+308
,最大安全数字Number.MAX_SAFE_INTEGER
等于9007199254740991
BigInt
大整数,它能够表示任意大小的整数,注意只能表示整数,而不受安全整数的限制来源
ES6标准入门、《JavaScript高级程序设计》29页
先写10个吧,太累了,果真,合格不是那么好达到的,加油吧!!!
github,欢迎issue