一.综合表单的必选
var oSexs = document.getElementsByName("sex");
var oHobby = document.getElementsByName("a");
var flagSex = false;
var flagHobby = false;
function isSelectSex(){
for(var i=0; i<oSexs.length; i++){
if(oSexs[i].checked){
return true;
}
}
return false;
}
function isSelectHobby(){
for(var i=0; i<oHobby.length; i++){
if(oHobby[i].checked){
return true;
}
}
return false;
}
xxx.onsbumit = function(){
flagSex = isSelectSex();
flagHobby = isSelectHobby();
if(flagXXX && flagXXX && flagSex){
}
}
二.正则的属性及方法
①test() 检验一个字符串是否符合某一个正则规范,如果符合返回true,否则返回false
用法: reg.test(str)
②exec 根据正则表达式查找,结果满足,会返回一个长度为1的数组(数组只有一个值)
用法:reg.exec(str)
var reg = /\d+/g;
var str = "123a456b789";
var arr = reg.exec(str);
③如何匹配到后面满足条件的字符串修饰符:g全局
console.log(arr[0]);
arr = reg.exec(str);console.log(arr[0]);
④search方法 (将正则对象作为字符串的参数)
返回与正则表达式查找内容匹配的第一个子字符串的位置用法:str.search(reg)
⑤match 方法
使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。
str.match(rgExp)
var reg = /\d+/g;
var str = "123a456b789";
var arr = str.match(reg);
console.log(arr);
⑥replace 方法 返回根据正则表达式进行文字替换后的字符串的复制。
stringObj.replace(参数1, 参数2):用参数2替换参数1
var str = "liji de ge bi shi liji";
str = str.replace(/liji/g,"laowang");
console.log(str);
三.let
let a = 123;
console.log(a);
①所有变量必须先定义后使用
②不能重复定义变量的值
③块级作用域,每次循环的过程中,i是独一无二的空间,不会被销毁
let oLis = document.querySelectorAll("li");
for(let i=0; i<oLis.length; i++){
oLis[i].onclick = function(){
console.log(i);
}
}
④暂时性死区,当内部变量与外部变量同名时,内部变量屏蔽外部变量
let a = 123;
{
let a = 456;
console.log(a);
}
console.log(a);
四.const
需求:有名字的常量 const:被const修饰的变量称为只读变量
①修饰只读变量
②必须被初始化
③必须先定义后使用
④不能重复定义
⑤块级作用域
⑥暂时性死区
const修饰的是栈空间,不是堆空间
面试题:
let,const,var的异同?
1.都是用来定义变量的
2.var具备声明提升
3.const修饰只读变量,并且必须初始化
4.let和cont
必须先定义后使用
不能重复定义
块级作用域
暂时性死区
五.this
this函数的内置对象
①与事件体连用,代表触发事件的元素本身
②与普通函数连用,代表调用该函数的对象
六. bind
bind:函数对象的函数,作用修改this指向(通常用来修改匿名函数)
参数:bind(被修改的this指向)
var oBox = document.querySelector("div");
document.onclick = function(){
this.style.display = "none";
}.bind(oBox);
var fun = function(){}
fun == function(){}
fun.bind(被修改的this指向)===>
function(){}.bind()
七.json对象和json字符串的相互转换
字符串是一切数据交互的桥梁
① JSON字符串--->JSON对象
let str = '{"name":"老王","age":18}';
let json = JSON.parse(str);
console.log(json);
②JSON对象--->JSON字符串
let str1 = JSON.stringify(json);
console.log(str1);
八.7.for...in和for...of
①for(let 索引 in json对象){通常遍历json字符串}
有一些容器是没有下标或者索引的
②for(let temp of 容器(不能是json)){ 通常用于遍历没有下标的容器(set,map)
每次temp代表该元素本身}
九.箭头函数
①箭头函数:匿名函数的简写方式
document.onclick = ()=>{
console.log("想念宣文振的第一天");
}
let fun = ()=>{
console.log("想念宣文振的第一天");
}
fun();
②箭头函数的特点
1.当函数只有一个参数时,箭头函数可以省略参数的小括号
let fun = a=>{
console.log(a);
}
fun(123);
2.当函数只有一行代码时,可以省略花括号
let fun1 = a=>{
console.log(a);
}
fun1(456);
3.当函数只有一行代码时,自带return
let fun2 = a=>a + 10;
//let fun2 = function(a){
//return a + 10
//}
console.log(fun2(1111));
十. 解构赋值
解构赋值:解析结构进行赋值 解析数组和json对象赋值
①解析结构并赋值
a.数组
let [x,y,z] = [1,2,3];
console.log(x,y,z);
b.json对象:好处,可以去掉多余前缀
let json = {
"name": "老王",
"age": 18
}
let {
name,
age
} = json;
console.log(name, age);
②交换两个变量的值
let [x, y] = [1, 2];
[x, y] = [y, x];
console.log(x, y);