1.1 复习
JS为什么要分数据类型
开房, 正规的开房
如果来一个老师到上海出差, 开一个房 开一个单间
如果来两个老师 两个男老师 开两个房间
如果是两个老师,夫妻 肯定一个房间,大床间
就像数据一样,不同的数据类型,开辟的空间是不一样的,运算的方式和效率也是不一样的。
1.1.1 变量的重复赋值
变量中的,如果是数字的话,可以重复的赋值,会将原值覆盖掉。
如果是字符串的话,就不一样的,字符串比较特殊,具有不可变性。如果重复的操作一块内存空间的话,一定要注意一个效率的问题。
1.2 If else-if
If(判断条件){ 一般是boolean类型的值或是关系表达式或是逻辑表达式
要执行的代码;
}else if(判断条件){
要执行的代码;
}else if(判断条件){
要执行的代码;
}...else {
要执行的代码;
}
执行过程:
程序首先运行到if处,先进入小括号中,判断条件是否成立,如果成立,也就是小括号里面返回true,则进入大括号执行里面的代码,如果条件不成立,也就是返回false,则依次的判断下面的else if对应的小括号中的条件是否成立,也就是返回true,如果成立则进入对应的大括号里面执行代码,如果都不成立,也就是返回False,则要看最后有没有else,如果有else,则进入else里面的大括号执行里面的代码,否则退出程序,执行后面的代码。
是多用来做区间的判断情况的。
1.3 三元运算符
表达式1(关系表达式或是逻辑表达式)? 表达式2:表达式3;
如果表达式1成立,也就是最终求解出一个True的结果或是 表达式1返回true,则表达式2的值是整个表达式的值,如果表达式1不成立,也就是求解出的结果是false,则表达式3是整个表达式的值。
一般多用于两种情况的语境。
var sex = 1;
// if(sex == 1) {
// console.log("男");
// }else{
// console.log("女");
// }
var a = sex == 1?"男":"女";
console.log(a);
var str = prompt("请输入两个人名中的一个,‘秦桧’,‘岳飞’");
// if(str =="岳飞"){
// console.log("忠臣");
// }else {
// console.log("奸臣");
// }
var s = str =="岳飞"?"忠臣":"奸臣";
console.log(s);
表达式: 就是一个可以计算出结果的式子
var a = 100;
比如说: a=1, “abc”, 100>20; a;
1.4 Switch-case
switch(值){ 一般是一个变量或是计算后的定值
case 值1:
要执行的代码;
break;
case 值2:
要执行的代码;
Break;
Case 值3:
要执行的代码;
Break;
Case 值4:
要执行的代码;
Break;
...
Default:
要执行的代码;
Break;
}
执行过程:
当程序执行到switch处,先进入小括号,计算里面值,然后拿着这个定值依次和大括号中case里面的值进行匹配,如果匹配成功,则执行对应的case中的代码,遇到break,则跳出当前swicth-case结构,如果匹配都不成功,则要看结构是否有default,如果有,则执行default中的代码,遇到break跳出结构,如果没有default,则直接跳出swicth-case结构,执行后面的代码。
多用于多条件的定值判断 。
注意:case中的值的数据类型一定要与switch小括号中的值的数据类型一致。
1.5 If-elseif 与switch-case的区别
相同点:都可以实现多分支结构
不同点:
if-else if:可以处理区间范围
switch:一般 只能用于定值比较
三者的区别:
if有条件的执行一条语句 一种情况
if-else有条件的执行一条或另一条语句 两种情况中的一种
switch有条件的执行一组语句中的一条语句 多种情况中的一种
1.6 短路运算
转换为boolean类型的值后为false的情况:
0,NaN, “”, null,undefined
&& ||
// var a = 100;
// var b = 20;
// var c = a+b>100 && a-b <50;
// console.log(c);
// var d = true && false;
// console.log(d);
//var e = "abc"&&"amn";
// &&找假 先看第一个表达式的值,如果第一个表达式不是boolean类型的话,会先将此值进行隐式转换,转换成boolean的值,如果转换后的值为true,则直接返回第二个值,不管第二值是真还是假,如果第一个数据为假,则直接返第一个数, 不管第二个数是真不是假。
//console.log(e);
var f = NaN && "aaa";
console.log(f);
//&& 操作数两边如果都不是布尔类型,会先把操作数转换成布尔类型,返回,值是false的那个操作数
//&& 如果两边都是false返回第一个操作数
|| 找真的
var n = "abc" || "kkk";
console.log(n);
// 找真的 ,如果两个值不是boolean类型的话,是先将当前的对象转换成对应的boolean类型的值,如果第一个值转换后为True,则直接返回,如果转换后,第一个值为false,则返回第二值。
逻辑非 ! !对象
非
如果操作数是对象,返回false
如果操作数是空字符串,返回true
如果操作数是非空字符串,返回false
如果操作数是0,返回true
如果操作数是任意非0值,返回false
如果操作数是null,undefined,NaN,返回true
上面的规则可以简化成
转换为false的值:false、""、0和NaN、null、undefined
!!"abc"结果是什么
1.7 While
循环: 所谓循环就是重复的做同一件事情
while 循环
while(循环条件){
循环体(要执行的代码);
}
执行过程:
当程序 运行到while处,首先进入小括号判断循环条件是否成立,如果成立,也就是值为true,则进入大括号执行里面的循环体,执行完毕之后,再次回到小括号中判断 循环条件是否成立,如果成立则再次进入大括号执行里面的循环体,往复循环。只要是循环,肯定会有一行代码能够改变循环条件,如果没有代码改变循环条件,我们称这样的循环叫死循环。
while(true){
循环体;
}
1.8 Do- while
Just do IT
Do{
循环体;
} while(循环条件)
执行过程:
程序执行到do处,先进入大括号执行里面的循环体,然后带着执行结果到达while的小括号,判断里面的循环条件是否成立,如果成立,则再次进入大括号执行里面的循环体,如果不成立,则跳出当前do-while循环。
特点,至少执行一次循环体,然后再判断 循环条件。
While的特点:
先判断循环条件,再执行循环体,有可能 一次循环体都不执行。
1.9 For循环
一般多用于已知次数的循环
for(表达式1;表达式2;表达式3){
循环体;
}
执行过程:
程序运行到for处,进入小括号中,先执行表达式1,声明变量,并赋初值,然后执行表达式2,判断循环条件是否成立,如果条件成立,则进入大括号执行里面的循环体,第一次循环的时候,并不执行表达式3,第一次循环执行完毕之后,执行表达式3,改变循环条件,然后再执行表达式2,判断循环条件是否成立,如果成立,则再次执行循环体,如果不成立,则跳出循环。
1.10 循环的嵌套
一个循环里面包含着另一个的循环
对于循环的嵌套来说,外面的循环循环一次,里面的循环循环N次
for(var i=0;i<6;i++){
for(var j=0;j<10;j++){
console.log("循环嵌套");
}
}
1.11 break
两种用法 :
第一种用在swicth-case 用于跳出当前程序
第二种,是用在循环当中,一般是用while或是for循环当中,与if搭配使用,作用就是立即跳出当前循环,后面的代码都不再执行。
也常见用于死循环的跳出。
While(true){
}
1.12 continue 继续的意思
一般也是用于循环当中,当遇到continue关键字的时候,立马停止本次循环,然后回到循环条件处,判断 循环条件是否成立,如果成立则继续下一次循环,如果不成立,则退出当前循环。
只结束当前本次循环,continue后面的代码都不再执行。
1.13 数组
数组 就是数据的有序列表。存储的是一组数据,这组数据可以是任意类型,而且数组中的元素可以随时的动态添加。
1.13.1 使用构造函数创建数组
// 第一种,用构造函数的方式创建 数组
var arr = new Array();// 创建了一个空数组,长度为0
// 数组就是数据的有序列表,这个顺序是按编号来的,默认以0开始,这个编号 叫做数组的索引或是下标
arr[0] = 100;
arr[1] = 99;
arr[2] = 98;
arr[10]=96;
console.log(arr.length);
console.log(arr);// 直接打印数组 ,就可以看到数组里面的数据
alert(arr);
var arr = new Array(6); //创建了一个长度为6的数组
arr[0]=100;
arr[7]=102;
console.log(arr.length);
console.log(arr);
JS的特性就是弱类型的动态语言,比如数组里面的元素是可以随时动态添加的,数组的长度会随着里面数据的变化而变化。
JS中的数组可以存储任何类型的数据,而且大小可以动态的改变,与PC中的内存大小相当。
1.13.2 使用字面量的方式创建数组
var arr = [100,98,96,99,93,95,97,69,89,58,87];
//console.log(arr[0]);
//console.log(arr[arr.length-1]);
for(var i=0;i<arr.length;i++){
console.log(arr[i] +"===="+i);
}
//console.log(arr.length);