面试day3

79 阅读3分钟

个人认为不错的面试题地址:juejin.cn/post/698942…

1.数组去重

let arr= [1, 2, 3, 3, 5, 7, 2, 6, 8];
console.log([...new Set(arr)]);

2.promise 用法

定义
var promise = new Promise(function(resolve, reject) {
  // ... some code
  if (/* 异步操作成功 */){
    resolve(value);
  } else {
    reject(error);
  }
});
使用
promise.then(function(value) {
  // success
}, function(error) {
  // failure
});
//等价于:
promise.then(function(){
  //success
}).catch(function(){
  //failure
})

2.闭包(高频)

闭包是指有权访问另一个函数作用域中的变量的函数 ——《JavaScript高级程序设计》

当函数可以记住并访问所在的词法作用域时,就产生了闭包,

即使函数是在当前词法作用域之外执行 ——《你不知道的JavaScript》

  • 闭包用途:

    1. 能够访问函数定义时所在的词法作用域(阻止其被回收)
    2. 私有化变量
    3. 模拟块级作用域
    4. 创建模块
  • 闭包缺点:会导致函数的变量一直保存在内存中,过多的闭包可能会导致内存泄

3.iframe的优缺点有哪些?

iframe的优点:

1、iframe能够原封不动的把嵌入的网页展现出来;

2、如果有多个网页引用iframe,那么只需要修改iframe的内容,就可以实现调用每一个页面的更改,方便快捷;

3、网页如果为了统一风格,头部和版本都是一样的,就可以写成一个页面,用iframe嵌套,可以增加代码的可重用;

4、如果遇到加载缓慢的第三方内容,如图标或广告,这些问题可以由iframe来解决;

iframe的缺点:

1、iframe会阻塞主页面的Onload事件;

2、iframe和主页面共享链接池,而浏览器对相同城的链接有限制,所以会影响页面的并行加载;

3、使用iframe之前需要考虑这两个缺点,如果需要使用iframe,最好是通过JavaScript;

4、动态给iframe添加src属性值,这样可以可以绕开以上两个问题

5、不利于seo

6、代码复杂,无法一下被搜索引擎索引到

7、iframe框架页面会增加服务器的http请求,对于大型网站不可取。

8、很多的移动设备无法完全显示框架,设备兼容性差。

4.css盒子模型?

所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。 CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。 盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

5.什么是BFC?BFC的布局规则是什么?如何创建BFC?BFC应用?

BFCBlock Formatting Context 的缩写,即块格式化上下文。BFC是CSS布局的一个概念,是一个环境,里面的元素不会影响外面的元素。 布局规则:Box是CSS布局的对象和基本单位,页面是由若干个Box组成的。元素的类型和display属性,决定了这个Box的类型。不同类型的Box会参与不同的Formatting Context。 创建:浮动元素 display:inline-block position:absolute 应用: 1.分属于不同的BFC时,可以防止margin重叠 2.清除内部浮动 3.自适应多栏布局 blog.csdn.net/weixin_4397…

6.rgba()和opacity的透明效果有什么不同?

rgba()和opacity都能实现透明效果,但最大的不同是opacity作用于元素,以及元素内的所有的元素的透明度,而rgba()只作用于元素的颜色或其背景色(设置rgba透明的元素的子元素不会继承透明效果)

7.html5和css3新特性

8.js数据类型

基本数据类型

1.number 2.null 3.string 4.undefined 5.symbol 5.Boolean

引用数据类型

1.数组 2.object 3.function

9.new操作符具体干了什么呢

  1. 创建一个新对象
  2. 将构造函数的作用域赋值给新对象(this 指向新对象)
  3. 执行构造函数中的代码(给新对象添加熟悉)
  4. 返回新对象