您的位置:首页 > Web前端 > JavaScript

前端JavaScript面试技巧

2017-07-17 10:40 771 查看

导读

请搭配导图一起看

- 基层攻城狮 基础知识

- 高级攻城狮 项目经验

- 架构师 解决方案

https://zhuanlan.zhihu.com/p/28428367





举例面试题:







变量类型和变量计算

几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构?

基本数据类型:Undefined、Null、Boolean、Number、String

值类型:数值、布尔值、null、undefined。

引用类型:对象、数组、函数。

堆栈数据结构:是一种支持后进先出(LIFO)的集合,即后被插入的数据,先被取出!

js数组中提供了以下几个方法可以让我们很方便实现堆栈:

shift:从数组中把第一个元素删除,并返回这个元素的值。

unshift: 在数组的开头添加一个或更多元素,并返回新的长度

push:在数组的中末尾添加元素,并返回新的长度

pop:从数组中把最后一个元素删除,并返回这个元素的值。





JS内置函数

内置函数Object,Array,Boolean,Number,String,Function,Date,RegExp,Error

内置对象Math,JSON…..







值类型和引用类型

值类型:数值、布尔值、null、undefined。

引用类型:对象、数组、函数。



What the fuck is JSON?

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

https://zh.wikipedia.org/wiki/JSON

http://www.json.org/json-zh.html



原型和原型链-构造函数问题



instanceof的妙用

object instanceof constructor

instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。



typeof无法判断数组



new对象过程





原型链继承





原型规则(隐式原型和显式原型)







原型链继承例子



zepto原型链



链式操作



作用域和闭包-执行上下文



变量(自由变量)



this



作用域



确定点击按钮的作用域



立即函数

( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法

模仿一个私有作用域,用匿名函数作为一个“容器”,“容器”内部可以访问外部的变量,而外部环境不能访问“容器”内部的变量,所以( function(){…} )()内部定义的变量不会和外部的变量发生冲突,俗称“匿名包裹器”或“命名空间”。

函数声明和函数表达式不同之处在于,一、Javascript引擎在解析javascript代码时会‘函数声明提升’(Function declaration Hoisting)当前执行环境(作用域)上的函数声明,而函数表达式必须等到Javascirtp引擎执行到它所在行时,才会从上而下一行一行地解析函数表达式,二、函数表达式后面可以加括号立即调用该函数,函数声明不可以,只能以fnName()形式调用 。

匿名函数属于函数表达式

JQuery使用的就是这种方法,将JQuery代码包裹在( function (window,undefined){…jquery代码…} (window)中,在全局作用域中调用JQuery代码时,可以达到保护JQuery内部变量的作用。

http://www.jb51.net/article/50967.htm



闭包





异步和单线程



同步和异步



异步场景







setTimeout过程





JS-Web-API



获取时间





数组API



遍历数组和对象

使用if判断数组(for,forEach)和对象(for in)



对象API





随机数(长度一定)



Dom



Dom操作常用API

获取Dom节点getElementById

获取父元素 parentElement

获取子元素 childNodes

新增节点appendChild

创建元素createElement

删除节点 removeChild



JS中Attribute 和prototype 的区别是一个是标签属性 一个是对象属性



网络基础





图片懒加载









BOM











事件绑定



代理

事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。



冒泡





ajax请求(包括http协议)







js模块化



不使用模块化





export和require



requires.js



引入





CommonJS



webpack



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: