一、 JavaScript的定义:
简称JS,是在浏览器端运行的弱类型解释型语言。
二、JS的两种书写方式:
1. 书写在HTML内部的`<script>代码</script>`
2. 外部引入:`<script src=""></script>`
三、数据类型
1. number:数字,控制台显示为蓝色。
2. 布尔类型:true,false
3. string:字符串类型,控制台显示为黑色。
4. null:空,取值为null。
5. undefined:取值为undefined。
四、运算符
1.算术运算符:+ - * / %
特殊:%为模
1. 任意数%2--判断奇偶数。
2. 取出数字的第N位--
2.比较/关系运算符:> < >= <= == != === !==
特殊:
1. NaN参与任何的比较运算结果都是false
2. 参与任何的算术运算结果仍为NaN
3.赋值运算符
=:将等号右边的值赋值给左边
4.逻辑运算符:综合比较 - 用于写条件
1. &&:与:全部条件都满足才为true,只要一个条件不满足就为false。
2. ||:或:全部全部条件都不满足才为false,只要一个条件满足就为true。
5. 自增自减运算符
++ -- i+=1
特殊:前++和后++的区别?
前++:返回的是加了过后的新值
后++:返回的是加之前的旧值
五.打桩输出:用于检查代码
1.console.log();结果输出在控制台,不会影响运行结果。
2.alert();:警告框,缺点,代码多了,运行界面会出现白色界面。
3.document.write(想要输出的东西);
六、变量
var 变量名=值;
七、常量
const 常量名=值;
八、分支结构语句
1.if...else语句:三种 (else可以省略不写,但是不推荐)
1.if(条件){
操作;
}
2.if(条件){
操作;
}
else{
默认操作;
}
3.if(条件1){
操作1;
}
else if(条件2){
操作2;
}
else{
默认操作;
}
2.switch...case语句
语法:
switch(变量/表达式){
case 值1:
操作1;
break;
case 值2:
操作2;
break;
default:
默认操作;
}
特殊:1.默认只要一个case满足后,会将后续所有的操作全部做完
2.如果中间多个条件,做的操作是一样的,可以省略掉中间部分
3.无特殊情况,每个操作后面都要跟上break;
3.三目运算
语法:条件1?操作1:条件2?操作2:默认操作
特殊: 1.默认操作不能省略,不然会报错
2.操作只能有一句话
九、强制转换
1.转数字:用于将字符串转为数字
语法:parseInt();
执行原理:从左往右依次执行,碰到非字符串就停止转换,如果一来就碰到不认识的,会转换为NaN,不认识小数点
2.转小数点
语法:parseFloat(str);
执行原理:从左往右依次执行,碰到非字符串就停止转换,如果一来就碰到不认识的,会转换为NaN,只认识第一个小数点
十、循环语句
1、while循环:
语法:
var 循环变量=几;
while(循环条件){
循环体;
循环变量变化;
}
特殊:死循环:while(true){死循环}
如何退出死循环:加break;
2.for循环:
语法:
for(var 循环变量=几;循环条件;循环变量变化){
循环体;
}
特殊:死循环:for(;;){}
十一、函数
1.定义:
需要先定义好,以后可以反复使用的一个代码段,需要用户在页面点击才会显示。
2.创建函数:2种
a.声明函数创建方式:
function 函数名(){操作;}
b.直接量方式:(不推荐)
var 函数名=function{操作;}
3、调用:
var 接住返回的结果=函数名(实参列表);
特殊:就算省略return,默认也有,会return一个undefined
4.作用域:2种
1.全局作用域:全局变量和全局函数,在页面的任何一个位置都可以使用。
2.局部作用域:局部变量和局部函数,只有在函数内部可用。
特殊:
1.变量使用规则,优先使用局部的,如果没有就使用全局的,全局也没有就会报错。
2.全局污染:给未声明的变量赋了值,会造成全局没有这个值,也会被赋上这个值。
5.声明提前(敲代码不要使用)
声明方式创建的函数会完整的提前(第一种)
直接量方式创建的函数不会完整提前,只有变量名部分会提前(第二种)
十二、数组
1、创建数组:2种
1.*直接量方式:var arr=[];//空数组
var arr=[数据1,...];
2.三个固定套路:
1、向末尾添加元素:arr[arr.length]=新数据;
2、获取数组的倒数第n个元素:arr[arr.length-n];
3、缩容:删除倒数n个元素:arr.length-=n;
3.遍历数组:
for(var i=0;i<arr.length;i++)
{
arr[i];//当前次元素
}
十三、查找元素
1.通过ID查找元素
语法:var elem=document.getElementById("id值");
特殊:如果出现多个相同id,也只会找到第一个
2、通过标签名查找元素:
语法:var elems=document/已经找到的父元素.getElementsByTagName("标签名");
特殊:返回的是一个类数组DOM集合,js不能直接操作集合,只能操作元素,解决:要么下标拿到某一个,要么遍历拿到每一个。
3、*通过 class 查找元素:
语法:var elems=document/已经找到的父元素.getElementsByClassName("class名");
特殊:返回的是一个类数组DOM集合,js不能直接操作集合,只能操作元素,解决:要么下标拿到某一个,要么遍历拿到每一个。
4.通过关系查找元素
1.父元素:elem.parentNode; - 单个元素
2.子元素:elem.children; - 集合
3.第一个子元素:elem.firstElementChild; - 单个元素
4.最后一个子元素:elem.lastElementChild; - 单个元素
5.前一个兄弟:elem.previousElementSibling; - 单个元素
6.后一个兄弟:elem.nextElementSibling; - 单个元素
十四、操作元素 前提:必须先找到元素
1、内容:
1、elem.innerHTML 可以识别标签
获取:elem.innerHTML;
设置:elem.innerHTML="新内容";
2、elem.innerText 只能识别纯文本,不识别标签
获取:elem.innerText;
设置:elem.innerText="新内容";
2、属性:
获取属性值:elem.getAttribute("属性名");
设置属性值:elem.setAttribute("属性名","属性值");
3、样式:
获取样式:elem.style.css属性名;
设置样式:elem.style.css属性名="css属性值";
特殊:css属性名,有横线的地方,去掉横线,变为小驼峰命名法
4.绑定事件
elem.on事件名=function(){
操作;
*****关键字this - 这个
如果单个元素绑定事件,this->这个元素
如果多个元素绑定事件,this->当前触发事件元素
}