0622面试题

JavaScript window.onload 事件和 jQuery ready 函数有何不同?

JavaScript window.onload 事件和 jQuery ready 函数之间的主要区别是,前者除了要等待DOM 被创建还要等到包括大型图片、音频、视频在内的所有外部资源都完全加载。

如果加载图片和媒体内容花费了大量时间,用户就会感受到定义在 window.onload 事件上的代码在执行时有明显的延迟。

jquery 中的方法链是什么?使用方法链有什么好处

调用另一个方法,本质上是每个函数末尾加了return this,将调用该函数的jquery对象返回的好处就是简洁明了 写起来也比较方便同时由于只对 DOM 进行了一轮查找,性能方面更加出色

webpack中的Loader和Plugin的区别?

  • webpack loader是用来加载文件的,webpack plugin是用来扩展功能的
  • loader主要用来加载一个个文件的,比如它可以加载js文件并把js文件转译成低版本浏览器可以支持的js文件;也可以用来加载css文件,可以把css文件变成页面上的style标签;还可以加载图片,可以对文件进行优化
  • plugin是用来加强webpack功能的,比如HTML webpack plugin 是用来生成一个html文件的;再比如mini css extract plugin 是用来抽取css代码并把它变成一个css文件的。

Webpack构建流程简单说一下

  1. 根据配置,识别入口文件;
  2. 逐层识别模块依赖(包括 Commonjs、AMD、或 ES6 的 import 等,都会被识别和分析);
  3. Webpack 主要工作内容就是分析代码,转换代码,编译代码,最后输出代码;
  4. 输出最后打包后的代码。

webpack打包文件太大怎么办?

1.去除不必要的插件

2.提取第三方库

3.代码压缩 webpack 自带了一个压缩插件 UglifyJsPlugin,只需要在配置文件中引入即可。

{
  plugins: [
    new webpack.optimize.UglifyJsPlugin({
      compress: {
        warnings: false
      }
    })
  ]
}:
加入了这个插件之后,编译的速度会明显变慢,所以一般只在生产环境启用。
另外,服务器端还可以开启 gzip 压缩,优化的效果更明显。

4.代码分割

可以通过 webpack 的 code split 以及配合 react router 就可以方便实现

code split不支持 ES6 的模块系统的,所以在导入和导出的时候千万要注意,特别是导出。如果你导出组件的时候用 ES6 的方式,这时候不管导入是用 CommomJs 还是 AMD,都会失败,而且还不会报错!

5.设置缓存

模块打包原理知道吗?

webpack根据webpack.config.js中的入口文件,在入口文件里识别模块依赖,不管这里的模块依赖是用CommonJS写的,还是ES6 Module规范写的,webpack会自动进行分析,并通过转换、编译代码,打包成最终的文件。最终文件中的模块实现是基于webpack自己实现的webpack_require(es5代码),所以打包后的文件可以跑在浏览器上。

使用箭头函数应注意什么?

  1. 用了箭头函数,this就不是指向window,而是父级(指向是可变的)
  2. 不能够使用arguments对象
  3. 不能用作构造函数,这就是说不能够使用new命令,否则会抛出一个错误
  4. 不可以使用yield命令,因此箭头函数不能用作 Generator 函数

简述 Set、Map的区别?

  1. Map是键值对,Set是值得集合,当然键和值可以是任何的值;
  2. Map可以通过get方法获取值,而set不能因为它只有值;
  3. 都能通过迭代器进行for…of遍历;
  4. Set的值是唯一的可以做数组去重,Map由于没有格式限制,可以做数据存储;

请写出以下代码的答案,并解释为什么要提升?

console.log(a)
var a = 1

答案:
(1)a 是undefined
因为变量a的声明被提到了作用域顶端。上面代码编译后应该是下面这个样子

    var a;
    console.log(a)
    a = 1
    //所以输出内容为 undeifend
所有的声明都会提升到作用域的最顶上去。

(2).
解析和预编译过程中的声明提升可以提高性能,让函数可以在执行时预先为变量分配栈空间
声明提升还可以提高JS代码的容错性,使一些不规范的代码也可以正常执行
简写:
提高性能
容错性更好

var、let、const之间的区别

  • var 特点: 可以声明变量 可以重复使用 过于灵活 不严谨 无法控制变量的修改 声明完后可以随便更改
  • let 特点: 不能重复声明 可以改 支持块级作用域
  • const 特点:不能重写 不能重复定义 支持块级作用于域
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值