1 简单描述
1 JS是一种运行在客户端的 "脚本语言"也是"编程语言" -> "弱类型动态语言"
2 渲染引擎: 用来解析HTML和CSS, 俗称内核
3 JS引擎: 用来解析网页中的JS代码, 对其逐行解释执行, 如V8引擎
4 脚本语言 (不需要编译, 由js引擎逐行进行解释并执行)
2 知识点
1 🔶 基础知识点
1 false: "" 0 NaN false undefined null
2 () > (++ !) > (==) > (&&) > (?:) > (=) > (,)
2 🔶 名词解释
1 NaN: 是一个无法表示具体值的 Namber 类型
2 arguments (实参列表): 形参会和实参列表的值会同步改变; 多余的形参, 不会影响实参列表的值
3 伪数组: 本质是有 length 属性和索引的 Object
4 continue: 跳过当前循环项
5 break: 结束循环; switch 中阻止穿透
6 return: 结束函数, 并可以指定返回值
3 🔶 基础逻辑理解
1 局部变量 -> 当我们程序执行完毕就会销毁, 比较节约内存资源
2 全局变量 -> 关闭文件才会被销毁, 比较占用内存资源
3 定义变量 -> 开头 ($ / 字母 / 下划线), 可包含 (数字); 不使用 (关键字 && 保留字)
4 基础数据 -> Number -- String -- Boolean -- Undefined -- Null
5 引用数据 -> Object -- Array -- Symbol
4 🔶 特殊值的比较
1 false
[] == [] / {} == {} / null == 0 / null == false
NaN == NaN / [0,1] == 01 / [0,1] == "01" / null===undefined
2 true
"" == false / [] == false / [2] == 2 / [] == 0
[] == ![] / 0 == false / [0,1] == "0,1" / ["a","b"] == "a,b"
null == null / undefined == undefined / undefined == null
5 🔶 JS 输出方式
1 alert(66)
2 prompt(66)
3 confirm(66)
4 console.dir(obj)
5 console.log(66)
6 🔶 扩展了解
1 08 -- JS中 0开头的数字表示8进制的数字 -- ES6中 0o表示8进制的数字
2 0x8 -- 说明这是一个 16进制的数字
3 小数之间的计算或比较, 先*100化整再比较
3 运算符
1 算术运算符
let num = 6 + 6
console.log(6 + 6)
2 自增自减
let a = 1
console.log(a++)
let b = 1
console.log(++b)
3 比较运算符
let a = 1, b = 2
console.log(a == b)
4 逻辑运算符
! -> 先转布尔值, 再取非
&& -> 遇假直接输出假, 所以表达式结果为假; 没有假输出最后一个 true, 所以表达式结果为 true
|| -> 遇真真接输出真, 所以表达式结果为真; 没有真输出最后一个假, 所以表达式结果为假
5 赋值运算符
let a = 1 -> a = a + 2 -> console.log(a)
let a = 1 -> a += 2 -> console.log(a)
4 基础语句
🔶 判断语句
1 if ( true) { ..}
2 switch (key) { ..}
3 true ? 66 : 77
🔶 循环语句
1 for (var i = 0, len = 6; i < len; i++) { ..}
2 while ( ) { ..}
3 do { ..} while ( )
5 基础操作
1 创建字符串
1 let str = "zhang"
2 数组 ↓
1 创建 let arr = [1, 2, 3]
2 读写 arr[index]
3 清空 arr.length = 0
3 对象 ↓
1 创建 var obj = {a: 'zhang', b: 'wei', c: 66, d: []}
2 读写 obj.c / obj["c"]
3 删除 delete obj.c
6 正则表达式
这个用的比较少 (有时间需要做一个完善)
基础用法
1 创建正则对象
var reg1 = new RegExp('abc','g/i/m'); (匹配规则, gim属性)
var reg2 = /abc/i;
2 正则对象的属性
1 reg.lastIndex; 上次匹配结束位置的索引+1,
2 reg.lastIndex = 0; 可读写
3 正则对象方法
判断字符串内有没有符合, 该正则对象的字符, 返回值是 true/false, 下面这个注释的机制也可以封装判断 str 内有多少个符合的字符
reg.test(str);
正则规则
1 元字符
1 \d 0~9 中任意一个数字
2 \s 一个空格
3 \b 一个单词边界
4 \w 一个字符
5 \n 查找换行符
6 \u 通常用来匹配汉字
7 . 匹配任意一个字符, 除了换行 (\n)
8 对应大写字母表示相反的意义: \D == 所有非数字字符
2 方括号
[abc] a || b || c (匹配三个中的一个)
[^abc] !a && !b && !c (匹配除他们之外的一个字符)
[0-9] 查找从 0-9 之间的任意一个数字
[a-z] 查找从小写 a 到小写 z 的一个字符
[A-Z] 查找从大写 A 到大写 Z 的一个字符
[0-9a-zA-Z] 查找匹配的, 中括号中的任意一个字符
3 量词
n+ 匹配一个或多个 {1,} -- /\d+/ == 匹配一个或多个数字
n? 匹配零个或一个 {0,1}
n* 匹配零个或多个 {0,}
n{X} 匹配 X 个连续字符 -- /\d{3}/ == 匹配3个数字连续在一起的情况
n{X,Y} 匹配 X 到 Y 区间任意个数的, 连续字符
n{X,} 匹配 X个, 或 X个以上的连续字符
^a 匹配开头为 n 的字符串 var reg6 = /^1/; == 匹配以1开头的字符串
n$ 匹配结尾为 n 的字符串 var reg7 = /^1[3-9]\d{9}$/; == 手机号的规则
4 其他
| 匹配左边或右边
\ 转义符, 特殊符号加在它后面, 就代表该符号本身
var reg4 = /\.+/;
var reg5 = /\(\d\)/;
/[\u4e00-\u9fa5]+/ 常用数字范围
var reg8 = /[\u4e00-\u9fa5]+/g;
() 分组, 一个小阔号为一组
RegExp.$1 == 保存了第一组的匹配结果
RegExp.$2 == 保存了第二组的匹配结果
5 正则对象的方法
1 reg.test(str);
判断str内有没有符合reg正则对象的值, 返回值是true false, 每次匹配都会从上次结束索引位置+1开始去匹配; 如果上一次为 false, 下次从头开始匹配, 可以匹配之后设置索引属性的位置
2 reg.exec(str);
检索字符串, 返回第一个符合条件的值, 且保存在数组中, 索引值 == 0, 没有返回 null
3 reg.compile('abc','g');
可以重编辑指定的正则表达式
6 String 对象的方法
1 str.search(reg); 检索与正则表达式相匹配的值, 返回索引值, 无 -1
2 str.match(reg); 返回所有正则表达式的匹配 (加 g), 返回数组
3 str.replace(reg,""); 替换与正则表达式匹配的子串, 返回替换之后的内容
4 str.split(reg); 将字符串匹配的部分做分割 (去除). 返回数组