[toc]
>#### 1.1 連接兩個或多個字符串
1. 直接加`+`
2. concat() 方法 `var c = a.concat(b)`
>#### 1. 2 連接字符串和另一種數據類型
使用`+`運算符,`+`是一個典型的重載
>#### 1.3 條件比較字符串
1. `==` 可以比較字符串兩個字符串是否相等
2. 因為大小寫會影響比較,所以可以用`toLowerCase` 和 `toUpperCase` 方法
3. `===` 嚴格相等運算符
>#### 1.4 在字符串中查找子字符串
1. 用indexOf方法查找子字符串的位置, 返回-1則不存在
;indexOf()接受兩個參數,后者是開始搜索的位置
2. lastIndexOf(),從后往前搜索,傳參與indexOf一致
```
testValue.indexOf(subsValue)
```
>#### 1.5 從一個字符串提取子字符串
1. 用indexOf(起點值)找到起點start,用indexOf("末尾值", start+1)找到終點end
2. 用substring(start+1, end)截取字符串,substring左閉右開; substr(起點值,長度);
3. 用split("分割值")將字符串分割成數組
>#### 1.6 檢查一個存在的、非空的字符串
```
if((typeof unknow != "undefined") && (typeof unknow.valueOf() == "string") && (unknow.length > 0)){
console.log("unknow是一個存在的非空字符串");
}
```
需要滿足三個條件:
1. typeof運算符得出的結果不為undefined,否則不能用valueOf()方法獲取值
2. 用valueOf()獲取值,并用typeOf判斷值是否為string
3. 目標的長度大于0,`.length` 獲取長度的對象必須存在,否則會報錯
**補充:typeof運算符的返回值:**
+ 數字返回`number`
+ 字符串返回`string`
+ 布爾類型返回`boolean`
+ 函數返回`function`
+ null, 數組, 其他JavaScript對象, 返回`object`
+ 未定義變量返回`undefined`
>#### 1.7 分解字符串
1. `split()` 接受兩個參數,分解的關鍵字,分解的次數
2. `split()` 可以接受正則表達式
>#### 1.8 插入特殊字符
使用`\` 轉義符號, 如`\u00A9` 版權符號
>#### 1.9 處理textarea的單個行
```
/* 獲取textarea */
var txtBox = document.getElementById("inputbox")
/* 以換行符號分割textarea的value值 */
var lines = txtBox.value.split("\n");
```
>#### 1.10 去除字符串末尾的空白
1. `trim()` 去除前后
2. `trimLeft()` 和 `trimRight`
>#### 1.11 左補充或右補充一個字符串
1. `padStart()` 創建一個新字符串,接受兩個參數(總數量, 添加的值)
2. `padEnd()` 從末尾添加
- JavaScript
- 1.數組
- 1.數組Api
- 2.判斷是否為數組
- 3.手寫forEach, map, filter, every, some, reduce
- 4.類數組轉化為數組
- 5.reduce實現compose函數
- 7.sort實現與排序
- 2.類型
- 1. let, const, var
- 1. Number 數字
- 3. Boolean 布爾值
- 4. undefined和null
- 2. String 字符串
- 1. 字符串方法
- 2. 操作字符串實例
- 3. startWith&字符串模板
- 5. 類型轉換
- 4.深拷貝與淺拷貝
- 7.Symbol類型
- typeof 和 instanceof
- Set
- Map
- 3.this,原型,原型鏈
- 1.this
- 2.手寫call, apply, bind
- 3.模擬new操作符
- 4.手寫Object.create
- 4.對象
- proxy代理
- defineProperty數據劫持
- 4.模塊化
- 5.http
- ECMAScript
- 0. 調試&兼容性&錯誤處理
- 3. 運算
- 4. 對象(三種引用類型&正則)
- 1. 數組
- 1. 數組的六種遍歷方法
- 2. 數組的增刪查改
- 3. 操作數組(展開、join、排序...)
- 4. 補充五種ES6方法
- 2. 函數
- 3. JSON
- 4. 正則
- 附:正則表達式特殊字符
- 5. 面向對象
- es6的繼承
- 6. 控制語句
- 7. ajax
- 8. promise
- 9. 閉包
- 1. 閉包產生三個相同隨機數
- 2. 閉包實現點贊
- 10.箭頭函數
- _isEmpty
- Object.assign(target, obj, obj)
- Math.ceil, round,
- DOM
- 3.1 節點
- 3.2 DOM操作元素
- 3.3 fragment DOM碎片
- 5. 事件
- BOM
- 1. window
- 2. navigation檢測訪問類型
- 3. screen窗口大小內容大小
- 4. history
- promise
- 1.promise使用
- 2.手寫promise
- 3.手寫promise.all
- 生成器generator
- 1.generator的使用
- 2.簡單實現generator
- 手寫async await
- async/await
- 5.防抖節流
- 難點深入
- 1. 瀏覽器&js特點
- 2. JS堆棧與深淺拷貝
- 3. 詳解a++和++a的區別
- 4. JS&jQuery獲取元素的方法
- 5. NodeList和HTMLCollection區別
- 6. var與let的區別
- 7. this 與 bind call apply
- 8. get與post請求的區別
- 9. 閉包
- Dom demo
- 1. JQuery--頁面點擊切換效果
- 2. JQuery-load實現頭尾封裝
- 3. JS--添加移除屬性名
- 4. jQuery--eq()與index()
- 5. table隔行變色
- 6. 改變函數this的指向
- 7. jQuery each遍歷
- ECMAScript demo
- 1. 斐波那契數列
- 2. 數組去重
- 3. 自調用函數生成隨機數
- 瀏覽器、DOM
- 1.從輸入url到頁面加載的全過程
- 2.http與https
- 3.v8垃圾回收機制
- 4.dom事件
- 5.跨域
- 6.強緩存和協商緩存
- 3.eventloop,宏任務和微任務
- 1.什么是任務
- 2.執行順序例題
- 3.執行順序例題,添加script
- 4.執行順序,多個宏任務
- 4.HTTP
- 1.經典五層模型
- 2.http發展歷史
- 3.http三次握手
- 4.URI,URL,URN
- 1.http協議
- 2.https
- http狀態碼
- 5.script標簽defer和async區別
- cookie
- connect: keep-alive