#### 聲明變量
~~~
{
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面試