#### 声明变量
~~~
{
let x = 1
}
console.log(x) // 无法获取x这个变量,let是声明块级局部变量
const y = 12
y = 13 // 报错,因为const是声明常量,无法修改
~~~
通过var定义的变量,作用域是整个封闭函数,是全域的 。通过let定义的变量,作用域是在块级或是子块中。
<br>
#### 对象键值简写
~~~
var x = 1
var y = {
x
}
// 对象键值同名可以简写
~~~
#### 模块引入与导出
~~~
// 引入Vue模块
import Vue from 'vue'
~~~
~~~
export default {
a:1
}
// 以后用import引入这个文件拿到这个导出对象
~~~
#### 解构
~~~
function test({a}, x){
console.log(a)
}
let obj = {a:1, b:2}
test(obj)
// 通过大括号里面加一个a,就可以把obj里面的a给拿出来,所以打印1
~~~
#### 模板字符串
~~~
let str = "world!"
`hello ${str}`
// 不用单引号,用`符号,可以把变量写进字符串里面解析
~~~
#### 箭头函数
~~~
var fn = (x, y) => {
console.log(x, y, this)
}
fn(1, 2)
~~~
箭头函数的特点就是定义箭头函数的时候,他的上下文决定了箭头函数里面this的值, 比如这个例子箭头函数上下文this是window,所以箭头函数里面this也是window
<br>
#### promise
~~~
function ajax(method, url) {
var xhr = new XMLHttpRequest()
// 异步执行代码
return new Promise(function (resolve, reject) {
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
// 成功就执行resolve
resolve(xhr.responseText)
} else {
// 失败就执行reject
reject(xhr.status)
}
}
}
xhr.open(method, url)
xhr.send()
})
}
const promise1 = ajax('GET', '后端接口地址')
// 异步处理的代码
// resolve就会执行then传的函数
// reject就会执行reject传的函数
promise1.then(function(res){
console.log(res)
}).catch(function(err){
console.log(err)
})
// 可见Promise最大的好处是在异步执行的流程中,把执行代码和处理结果的代码清晰地分离了
~~~
通俗的讲,new Promise传一个ajax异步请求的函数, 然后new这个Promise生成Promise对象,这时候接口已经调用了,你就可以promise对象.then来处理接口返回的数据,promise对象,catch来处理调接口错误
- 初级前端题
- 必会
- http协议
- 跨域
- cookie与storage
- 移动端问题
- 性能优化
- Vue全家桶
- 有哪些常用的es6语法?
- 项目
- 闭包
- JSON
- 数据类型与运算
- 数组
- DOM
- 字符串
- 要会
- async与await
- 正则
- this
- 数据加密
- 实时获取数据
- 原生ajax
- 异步打印
- css相关
- 杂七杂八
- webpack
- 一般
- mvvm模式
- 异步请求
- XSS
- 其他dom问题
- 冷门
- 浏览器缓存机制
- 新
- 浏览器事件轮询
- Promise
- 树的深度优先与广度优先
- 拷贝
- 继承
- Vue
- 跨域
- 排序
- 浏览器
- 浏览器入门
- 浏览器内核知识
- 浏览器渲染原理
- 浏览器性能调优
- 自动化构建
- 字符编码
- git
- 一些题目
- 其他
- 逻辑思维题
- 互联网公司招聘信息如何阅读
- bat面试