面试总结(二)

一、jQuery
1.$(document).ready()是个什么函数?为什么要用它?
当DOM完全加载,jQuery允许你执行代码,使用$(document).ready()的最大好处在于它使用于所有
浏览器,jQuery解决了跨浏览器的难题
2.JavaScript window.onload 事件和 jQuery ready 函数有何不同?
(1)前者需要等待dom被创建,还要等待包括大型图片、音频、视频在内的所有外部资源都完全加载,如果
加载图片和媒体内容花费了大量时间,用户就会感受到定义在window.onload事件上的代码执行时有明显
延迟。
(2)后者只需要对dom树等待,而无需对图像或外部资源加载等待,从而执行起来更快;
另一个优势是可以在网页中多次使用,浏览器会按他们在html页面里出现的顺序执行它们
3.jQuery里的each()是什么函数?你是如何使用它的?
each()函数允许遍历一个元素集合,可以传一个函数给each()方法,被调用的jQuery对象会在其每一
个元素上执行传入的函数。
找出所有的选中项,然后我们在alert框中用each()方法来一个个打印它们
$('[name=NameOfSelectedTag]:selected').each(function(selected){
alert($(selected).text());
});
4.$(this) 和 this 关键字在 jQuery 中有何不同?
$(this)返回一个jQuery对象,你可以对它调用多个jQuery方法,比如用text()获取文本,用val()获取值等
this代表当前元素,它是js关键词中的一个,表示上下文中的当前DOM元素
5.jQuery.get() 和 jQuery.ajax() 方法之间的区别是什么?
get()方法是一个只获取一些数据的专门化方法
ajax()方法更强大,更具可配置性,让你可以指定等待多久,以及如何处理错误
6.Jquery 与 jQuery UI 有啥区别?
*jQuery 是一个 js 库,主要提供的功能是选择器,属性修改和事件绑定等等。
*jQuery UI 则是在 jQuery 的基础上,利用 jQuery 的扩展性,设计的插件。 提供了一些常用的界面元素,诸如对话框、拖动行为、改变大小行为等等
7.jQuery 和 Zepto 的区别?各自的使用场景?
(1)jQuery 主要用于 pc 端,当然有对应的 jQuerymobile 用于移动端
(2)zepto 比 jQuery 更 加小巧,主要用于移动端
(3)jquer mobile 相对于 zepto 功能强大,但是体积也很庞大,zepto 非常的轻量

二、ES6知识点
1.箭头函数使用需要注意的地方
当要求动态上下文的时候,就不能使用箭头函数,也就是this的固定化
(1)在使用=>定义函数的时候,this的指向是定义时所在的对象,而不是使用时所在的对象
(2)不能够用作构造函数,也就是说不能使用new命令
(3)不能够使用arguments对象
(4)不能使用yield命令
如何理解块级作用域
(1)在一个函数内部function(){}
(2)在一个代码块内部
特点:
(1)不需要function关键字来创建函数
(2)省略return关键字
(3)继承当前上下文的 this 关键字
2.let和const
let是更完美的var,不是全局变量,具有块级函数作用域,大多数情况不会发生变量提示
const定义常量值,不能够重新赋值,如果值是一个对象,可以改变对象里边的属性值
let:不存在变量提升、暂时性死区、不允许重复声明、块级作用域
3.结构赋值
(1)左右两边结构必须一样;
(2)右边必须是个合法的值;
(3)声明和赋值不能分开(必须在一句话里完成);
4.扩展运算符
对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中
5.promise对象
含义:promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件更强大更合理。
promise对象两个特点:
(1)对象的状态不受外界影响。三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)
(2)一旦状态改变,就不会再变,任何时候都可以得到这个结果
优点:
(1)将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
(2)Promise对象提供统一的接口,使得控制异步操作更加容易。
缺点:
(1)无法取消Promise,一旦新建它就会立即执行,无法中途取消
(2)如果不设置回调函数,Promise内部抛出的错误,不会反应到外部
(3)当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)
基本用法:
Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。
const promise = new Promise(function(resolve, reject) {
// ... some code
if (/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});
Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数
promise.then(function (value) {
// success
}, function (value) {
// failure
})
Promise.prototype.catch方法是.then(null, rejection)或.then(undefined, rejection)的别名,用于指定发生错误时的回调函数。
***.jquery的ajax返回的是deferred对象,通过promise的resolve()方法将其转换为promise对象。
6.set数据结构
es6方法,Set本身是一个构造函数,它类似于数组,但是成员值都是唯一的。
const set = new Set([1,2,3,4,4])
console.log([...set] )// [1,2,3,4]
console.log(Array.from(new Set([2,3,3,5,6]))); //[2,3,5,6]
7.map, filter, reduce 各自有什么作用?
(1)map 作用是生成一个新数组,遍历原数组,将每个元素拿出来做一些变换然后放入到新的数组中。
(2)filter 的作用也是生成一个新数组,在遍历数组的时候将返回值为 true 的元素放入新数组,我们可以利用这个函数删除一些不需要的元素
(3)reduce 可以将数组中的元素通过回调函数最终转换为一个值。

三、【简单理解】gulp和webpack的区别
安装 gulp 命令行工具:npm install --global gulp-cli
gulp:可以进行js,html,css,img的压缩打包,是自动化构建工具,可以将多个js文件或是css压缩成一个文件,并且可以压缩为一行,以此来减少文件体积,
加快请求速度和减少请求次数;并且gulp有task定义处理事务,从而构建整体流程,它是基于流的自动化构建工具。
Webpack:是前端构建工具,实现了模块化开发和文件处理。他的思想就是“万物皆为模块”,它能够将各个模块进行按需加载,不会导致加载了无用或冗余的代码。

四、vue和react的各自优势和相似点
1.Vue的优势是:
模板和渲染函数的弹性选择
简单的语法和项目配置
更快的渲染速度和更小的体积
更加适合小型项目
2.React的优势是:
更适合大型应用和更好的可测试性
Web端和移动端原生APP通吃
更大的生态系统,更多的支持和好用的工具
比较适合中大型项目
3.React和Vue相似之处:
用虚拟DOM实现快速渲染
轻量级
响应式组件
服务端渲染
集成路由工具,打包工具,状态管理工具的难度低
优秀的支持和社区
4.不同点:
(1).React严格上只针对MVC的view层,Vue则是MVVM模式
(2).virtual DOM不一样,vue会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树.
而对于React而言,每当应用的状态被改变时,全部组件都会重新渲染,所以react中会需要shouldComponentUpdate这个生命周期函数方法来进行控制
(3).组件写法不一样, React推荐的做法是 JSX + inline style, 也就是把HTML和CSS全都写进JavaScript了,即'all in js';
Vue推荐的做法是webpack+vue-loader的单文件组件格式,即html,css,jd写在同一个文件;
(4).数据绑定: vue实现了数据的双向绑定,react数据流动是单向的
(5).state对象在react应用中不可变的,需要使用setState方法更新状态;
在vue中,state对象不是必须的,数据由data属性在vue对象中管理;
posted @ 2019-08-20 20:24  黑框眼镜·  阅读(114)  评论(0)    收藏  举报