[TOC]
### 1、undefined和null的区别
null:空值,使用typeof运算得到 “object”
undefined:当一个声明了一个变量未初始化时,得到的就是undefined。
>[success] undefined是访问一个未初始化的变量时返回的值,而null是访问一个尚未存在的对象时所返回的值。因此,**可以把undefined看作是空的变量**,**null值则是表示空对象指针**
*****
### 2、前端优化
**加载优化:**
1.合并css,js
2.缓存一切可以缓存的资源
3.使用外联式引用css、js
4.减少cookie
**css优化:**
1.css写在头部,js写在尾部或异步
**网络方面:**
减少http请求
*****
### 3、jsonp的实现原理:
它是在文档中插入一个script标签,创建\_callback方法,通过服务器配合执行\_callback方法,并传入一些参数
### 4、document.write和innerHTML的区别
document.write会将页面上的所有内容清除包括标题。
innerHTML只会重写所属元素的内容,即`<div>`元素中的内容。
### 5、dns解析 tcp
1. 域名解析
2. 发起TCP三次握手建立连接
3. 建立连接后发起http请求
4. 服务器响应请求,浏览器获取html源码
5. 浏览器解析html代码,并请求相关css,js和图片资源
6. 浏览器渲染页面
### 6、垂直水平居中
- 定位,left,top各为50%,margin-left和margin-top各为宽高的负二分之一
- 定位,left,top各为50%,transform为负50%
- 定位,上下左右都为0,margin:auto
- flex布局,给父元素justify-content: center;align-items: center;
- grid布局,给父元素,justify-items: center;align-items: center;
- table布局,给父元素,display: table-cell;vertical-align: middle;text-align: center;
### 7.form标签中action属性的作用是?
向何处发送表单数据。
### 8.JS中this怎么理解
事件中:指向当前对象
方法中:谁调用方法指向谁
### 9.es6新增了哪些特性
1.运用let声明变量(块级作用域 不能重复声明 不会声明提前)
2.箭头函数,解决了this指向问题
3.展开、解构、默认赋值
4.继承语法
5.Promise
6.class
7.Modules
*****
### 10.json对象转换成字符串
json.stringify(obj):json对象转换成字符串
json.parse(string): 字符串转换成json对象
*****
### 11.js中把7.25转换成一个整数
```
var a = 7.25;
parseInt(a);
console.log(a);
```
```
var a = Math.floor(7.25);
console.log(a)
```
```
var a = Math.round(7.25);
console.log(a)
```
*****
### 12.解决间隙留白问题
```
<style type="text/css">
* {
margin: 0;
padding: 0;
}
.test {
width: 600px;
border: 1px blue solid;
font-size:0; /**/
}
.test div {
width: 100px;
height: 100px;
display: inline-block;
background: blue;
vertical-align:bottom;/**/
}
</style>
```
```
<div class="test">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
```
*****
### 13.js中的定时器有哪些?以及它们之间的区别
- 超时调用setTimeout(),在一段实际之后调用(在执行代码之前要等待多少毫秒)
```
function test(){
alert("孙悟空");
}
setTimeout(test,2000); //2s后弹出“孙悟空”
```
- 间歇调用setInterval(),指定的时间内不断地重复执行代码
```
function test(){
alert("孙悟空");
}
setInterval(test,2000); //间隔2s弹一次“孙悟空”
```
### 14.子元素无法设置margin-top的问题
- 给父元素overflow: hidden;
- 给伪元素 .one::before{}
*****
### 15.作用域
```
var num1 = 12;
var num2 = 34;
function xiao(num,num1){
num = 134 ;
num1 = 453 ;
var num2 = 123;
console.log(num); //134
console.log(num1); //453
console.log(num2); //123
}
xiao(num1,num2)
console.log(num1); //12
console.log(num2); //34 如果function里面的num不用var 将会是123
console.log(num); //报错
```
### 16.贪婪模式和懒惰模式
贪婪模式 :
```
var str = "123456abc";
var reg = /\d{3,6}/; //{3,6}就是最少3个最多6个
console.log(str.replace(reg,"*") //*abc 贪婪模式就选择了最多的
```
懒惰模式:
```
var str = "123456abc";
var reg = /\d{3,6}?/; //{3,6}就是最少3个最多6个
console.log(str.replace(reg,"*"))//*456abc 懒惰模式选择了最少
```
### 17.状态码

503——Service Unavailable——网页程序没有相关的结果
- HTML,CSS
- 如何书写高效的css样式
- box-shadow
- 表格合并行列
- 自适应单位
- 隐藏元素
- 浏览器缓存
- 浏览器内核
- css和js的合理走位
- 2021样式问题汇总
- 模拟面试
- 移动端适配问题
- flexible(rem)
- vw+rem
- 判断一个属性是对象的私有属性
- px rpx em rem vw
- 清除浮动
- 栅格系统
- get&&post
- 雪碧图
- new操作符
- call apply bind区别
- 前端模块化
- 回调函数
- 回调地狱(封装版)
- 回调地狱(promise)
- 回调地狱(generator)
- 回调地狱(async)
- es6新特性
- let
- 箭头函数
- 展开 解构 默认赋值
- vue生命周期
- axios封装
- axios跨域拿数据
- ajax封装
- JavaScript
- 数组
- 排序
- 取偶数
- 反转排序
- 取最大值
- 数组去重
- 复杂版
- 数组的克隆(深拷贝)的方法
- 求质数
- 原型和原型链
- 创建对象
- 什么是路由
- SASS
- jQuery中的append和prepend区别?
- css动画及js动画的区别
- 隐式类型转换
- 原型
- 事件传播
- 函数
- 增加属性
- 构造函数
- 一元操作符
- 作用域
- 短语
- Vue
- - nextTick
- 自我介绍
- 哦豁(;д;)
- for in效果
- 事件
- promise特点
- 如何实现一个ajax请求
- 媒体查询
- substr和substring
- MVC、MVVM
- 面向对象
- 取数据、渲染数据
- ajax
- vue
- React
- es6-class
- 几种类型的DOM节点
- js同源策略
- 闭包
- 2021
- 数据类型
- 闭包2
- 防抖节流
- 原型与原型链
- call与apply与bind
- 深浅拷贝
- New关键字
