文章目录
日期时间
DOM节点
无他,了解几个API
parentNode
children
nextElementSibling
previousElementSibling
DOM CRUD
- 常规CRUD
- 克隆节点
- 删除节点
M端事件(了解)
swiper插件(了解)
Window对象模型
定时器
setTimeout
setTimeInterval
事件循环EventLoop(js原理)
经典面试题:
<script>
console.log(1);
setTimeout(function(){
console.log(3)
},0)
console.log(2)
</script>
会打印结果 1 2 3, 注意不是 1 3 2 ,
setTimeout即使参数为timeout=0,也是异步的。这和java的ScheduleService还是有点差异的
location对象
location.href = "http://www.baidu.com/" //跳转到这个地址
这个场景:支付成功5s后返回
location.reload()
location.search()
location.hash()
navigator对象
history对象
localstorage(重点)
- Localstorage只能被同一个域的多个页面共享,也就是说,跨域不能共享
- localstorage只存储kv都是字符串,setItem()的参数会自动转为字符串;要是存储复杂数据结构,可以使用json str
sessionStorage
正则
正则基础
元字符
元字符分类:
console.log(/哈/.test('哈哈哈')) //true
console.log(/^哈$/.test('哈哈'))//false 【注意是精确匹配了】
console.log(/^哈$/.test('哈')) //true
1.边界符
典型就是 ^
和 $
了
// 【正则 /^哈*$/ 表示字符串开头必须是零或者多个'哈',
// 同时字符串末尾也必须是零或多个'哈'】
console.log(/^哈*$/.test('哈哈')) //true
console.log(/^哈*$/.test('哈大'))//false
console.log(/^哈*$/.test(''))//true
console.log('================================');
// 【正则 /^哈+$/ 表示字符串开头必须是一个或者多个'哈',
// 同时字符串末尾也必须是一个或多个'哈'】
console.log(/^哈+$/.test('哈哈')) //true
console.log(/^哈+$/.test('哈'))//true
console.log(/^哈+$/.test('哈大哈'))//false
console.log(/^哈+$/.test(''))//false
// 出现且只出现二次
console.log(/^哈{2}$/.test('哈')) //false
// 出现 2 到 6次均可
console.log(/^哈{2,6}$/.test('哈哈')) //true
// 不能乱入其他 字符
console.log(/^哈{2,6}$/.test('哈大哈')) //false
// 至少出现2次
console.log(/^哈{2,}$/.test('哈哈哈')) //true
// 字符串只要返回 至少一个 abc 中的字符都返回 true
// 注意:是只要返回至少一个abc中的任意一个字符
console.log(/[abc]/.test('a')); //true
console.log(/[abc]/.test('ab'));//true
console.log(/[abc]/.test('abddd'));//true
// 加了^和$,限定了边界;表示 只有一个字符,且必须是
// abc 其中的一个。
console.log(/^[abc]$/.test('a')); //true
console.log(/^[abc]$/.test('ab')); // false
// 加了 量词,限定了字符重复次数,表示可以是 零或 多个字符,且必须是
// abc其中一个
console.log(/^[abc]*$/.test('a'));//true
console.log(/^[abc]*$/.test('ab'));//true
console.log(/^[abc]*$/.test('aaaa'));//true
//表示是零个或多个小写字母
console.log(/^[a-z]*$/.test('ab'));//true
//乱入了字符,返回false
console.log(/^[a-z]*$/.test('ab哈'));//false
//表示只能是英文大小写和数字之中的任意【一个】字符
console.log(/^[a-zA-Z0-9]$/.test('ab'));//false
console.log(/^[a-zA-Z0-9]$/.test('P'));//true
console.log(/^[a-zA-Z0-9]$/.test('p'));//true
console.log(/^[a-zA-Z0-9]$/.test('0'));//true
//表示只能是英文大小写和数字之中的【零个或多个】字符
console.log(/^[a-zA-Z0-9]*$/.test('0'));//true
console.log(/^[a-zA-Z0-9]*$/.test(''));//true
- 一定要注意取反符号
^[]
和 边界符号[^]
的区别 - 还有个字符
.
表示除了换行符之外所有字符
案例:
用户名校验:只能输入英文大小写、短横线、下划线,并且用户名为6~16位长的字符串。
// 一定牢记: [] 这个中括号表示的N选一
const reg = /^[a-zA-Z0-9-_]{6,16}$/
console.log(reg.test('a999')) //false 长度不够
console.log(reg.test('a99999')) //true
console.log(reg.test('a______'));//true ,除了第一个字符,其余都是下划线
console.log(reg.test('a-------')) //true,除了第一个字符,其余都是短横线