前端面试题

1. 浏览器内核

webkit: safari 曾经的 chrome
presto(变): opera,后来加入谷歌阵营
trident(三叉戟): ie
blink(闪亮): chrome
gecko(壁虎): firefox
详见:浏览器内核与js引擎
五大流浏览器内核及其代表

2. JavaScript 的 typeof 返回哪些数据类型?

首先知道,js数据类型分为:基础数据类型和引用数据类型。

基础数据类型:Number , String , Boolean , Null , Undefined , Symbol
( 此括号内为 symbol 解释,可以跳过不看 es2015即es6中新增,用于生成一唯一值的key,例如,为一对象声明一属性,如果设 obj.a 属性为某一数值,但是我们并不知道该对象是否本身会有该a属性,所以此方法不妥当,此时可以用 var a = symbol();obj[a] = number ,则不会和该对象本身已存在的属性 a 冲突。且 symbol() d的括号中可以添加字符串,用于便于区分所定义的变量,但是 symbol('a') === symbol('a') 结果是 false )
引用数据类型:Object

typeof会返回的类型为七种:Number , String , Boolean , Undefined , Symbol , Object , function
typeof(null) => object

3. null和undefined的区别。

null == undefined : true ; null === undefined : false;
(1) null 表示一个‘无’的对象,转换为数值时为0;undefined 表示为一个‘无’数,转换为数字为NaN。
(2) null:

作为函数的参数,表示该函数参数不是对象;
由于 js 中‘万物皆对象’,而每一个对象都有对象原型 __proto__ 属性,所以必然会形成一个由 __proto__ 形成的一个原型链,这个链必须要有终点,用 null 表示,即对象原型链的终点。

undefined:

变量声明未赋值;
对象为赋值属性;
没有返回值的函数;
函数中,应该提供的参数没有提供,该参数为 undefined。

详见:阮一峰:undefined与null的区别

4. 原型链和原型对象

函数拥有原型,即 prototype ,原型是一个对象,而 js 中每一个对象都有一个 __proto__ 属性,由 __proto__ 属性所组成的指向链即为原型链。
后期补充:原型对象的用途是为每个实例对象存储共享的方法和属性,它仅仅是一个普通对象而已。并且所有的实例是共享同一个原型对象,因此有别于实例方法或属性,原型对象仅有一份。它有函数原型和 __proto__ 两个属性,对象的 __proto__ 属性指向该对象的构造函数的原型对象。
详见:三张图搞懂JavaScript的原型对象与原型链
一个例子让你明白原型对象和原型链

5. 闭包

能够读取函数内部变量的函数
学习Javascript闭包(Closure)--阮一峰

注意:函数内部定义变量要加上 var ,否则该变量则会成为全局变量

你可能感兴趣的:(前端面试题)