JavaScript面试基础

1.何时使用==和===

if(obj.a == null) {} 只有此时用==,其他时候用===,这是JQuery源码中推荐使用的写法

2.JS中按照存储方式分为:值类型,引用类型

值类型:赋值时不会互相干扰

引用类型:指针类型,会互相干扰,它不是值的拷贝

3.理解JSON

JSON是一个JS对象,也是一种数据格式

JSON.stringify({a:10,b:4})  转换成字符串

JSON.parse('{"a":10,"b":4}') 转换成JSON对象

4.原型与原型链

用instanceof来判断一个函数是否是一个变量的构造函数

5条原型规则:

★所有引用类型(数组,对象,函数),都具有对象的特性,即:

    可自由扩展属性(除了null外)

JavaScript面试基础_第1张图片

★所有引用类型(数组,对象,函数),都有一个__proto__属性(隐式原型),属性值是一个普通的对象

★所有函数,都有一个prototype属性(显式原型),属性值是一个普通的对象

★所有引用类型(数组,对象,函数),__proto__属性值指向它的构造函数的prototype属性值

★当试图得到一个对象的某个属性值时,如果这个对象本身没有这个属性,那么它会去它的__proto__(即它的构造函数的prototype)中寻找

问题:

如何准确判断一个变量是数组类型:


描述new一个对象的过程:

创建一个新对象,this指向这个新对象,执行代码(即对this赋值),隐式返回this

zeopto(或其他框架)源码中如何使用原型链

JavaScript面试基础_第2张图片

5.闭包使用场景

函数作为返回值

函数作为参数传递

作用域:自由变量,作用域链(自由变量的查找),闭包的使用场景

闭包主要用于封装变量,收敛权限

6.this

作为构造函数执行

作为对象属性执行

作为函数执行

JavaScript面试基础_第3张图片

7.异步和单线程

使用异步的场景:定时任务:setTimeout,setInterval;网络请求:ajax,动态img加载;事件绑定(都需要等待,等待过程不能阻塞)

同步与异步的区别:同步会阻塞代码的执行,异步不会(alert是同步执行)

8.其他

获取2017-06-10的日期

JavaScript面试基础_第4张图片

获取随机数,要求长度一致的字符串格式

(Math.random在前端中主要是为了清除缓存)


写一个能遍历对象和数组的通用forEach函数(数组API(foeEach,every,some,filter,sort))

JavaScript面试基础_第5张图片

9.JS-Web-API

DOM本质:浏览器把拿到的html代码,结构化一个浏览器能识别并且js可操作的一个模型

attribute:html标签的属性

property:js对象标准属性

DOM的基本数据结构:树

10.BOM

如何检测浏览器的类型

navigator.userAgent从这个字符串里来分析

拆解url的各部分

location.protocol返回协议

location.host返回主机

location.pathname

location.search

11.事件

通用事件绑定:

JavaScript面试基础_第6张图片

JavaScript面试基础_第7张图片

事件冒泡

DOM树形结构,事件冒泡

e.stopPropatation()阻止冒泡

代理:代码简洁,减少浏览器内存占用

12.ajax

同源策略:不允许ajax访问其他域的接口

可以跨域加载资源的三个标签:

     用于打点统计

     

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