前端面试准备复习(二)

1. line-height继承问题

(1)父元素行高为具体数值,则直接继承该值

(2)写比例,则直接继承该比例

(3)写百分比,则继承算出来的值

2.rem

(1) px是一个绝对长度单位,最常用

(2)em是相对长度单位,相对于父元素,不常用

(3)rem是相对长度单位,相对于根元素,想用于响应式布局

3.如何实现响应式

(1)media-query,根据不同的屏幕宽度设置根元素font-size

(2)rem,基于根元素的相对单位

(3)vh网页视口高度的1/100,vw网页视口宽度的1/100, vmax取两者的最大值,vmin取两者的最小值

4.typeof能判断哪些类型

(1)识别所有的的值类型

(2)识别函数

(3)判断是否是引用类型(无法具体判断是哪种引用类型)

5.何时使用===何时使用==

 进行两个元素之间的判断时,除了null和undefined使用==,其他都用===

6.值类型和引用类型的区别

7.手写深拷贝

 function deepClone(obj = {}) {

  if(typeof obj !== 'object' || obj == null ) {

  // obj是null,或者不是对象和数组,直接返回

    return obj 

  }

  let result 

  if( obj instanceof Array) {

     result = []

  } else {

    result = {}

  }

  for (let key in obj) {

   //保证key不是原型的属性
      if(obj.hasOwnProPerty(key)) {

     // 调用递归

     result[key] = deepClone(obj[key])

    }

   return result

  }

8. 变量计算-类型转换

(1)字符串的拼接,字符串与数值相加数字会被认为是字符串拼接

(2)== 只判断值,不判断类型

(3)if语句和逻辑运算符

  <1>truly变量:!!a === true的变量

  <2>falsely变量: !!a === false的变量

  // 以下是falsely变量,其他都是truely变量

      !!0 === false

  !!NaN === false

  !!'' === false

  !! null === flalse

  !! undefined === false

  !!false === false

原文地址:https://www.cnblogs.com/dy0302/p/14952770.html