[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