一.JavaScript错误
JS错误大体分为两大类:语法错误、通用错误
1.语法错误
console.log(3)后面的分号是中文输入法的,导致产生SyntaxError,此时,所有语句都不会执行
2.通用错误:中断执行
(1)错误语句之前的语句会执行,之后的语句不会执行,
(2)代码块与代码块之间的错误是不会相互影响的
二.JavaScript运算符
计算机的运算步骤:
<script>
var a=1,
b=2,
d=3;
var c=(a+b)*d
var c=(a+b)*d : 计算机自己操作的步骤为 :
1.声明变量c,
2.变量a的值和变量b的值相加,再与变量d相乘得到结果
3.将所得的结果赋值给c
(经验)小知识:
浏览器F12的调试页面,数字类型呈现蓝色,字符串类型呈现灰黑色
1. 加号(+)
任何数据类型的值加上字符串 结果都为字符串
2. 除号(/)
<script>
var a=5,
b=2,
c;
c=a/b;// 2.5
c=0/0 //输出NaN /NaN 全称为Not a Number
/ NaN为数字类型 ; console.log(typeof(NaN))结果为number
c='a'/'b' //NaN
c=NaN /NaN //NaN
/NaN 任何数据与NaN运算的结果都为NaN
/原因:之前计算的时候就已经得出非数的结果,后续再输出的过程中 输出的仍然是非数的结果,(输出数据在计算的时候就已经出现了错误,导致了非数的出现)
console.log(1/0);//Infinity
console.log(-1/0);//-Infinity
Infinity 为数字类型
console.log(typeof (Infinity)); /结果为number
</script>
NaN为数字类型 ; console.log(typeof(NaN))结果为number
正负无穷等也为数字类型 console.log(typeof (Infinity)); /结果为number
3. 取模、取余(%)
<script>
c= 5 % 2;// 1
/规律:前面的数小于后面的数时,取余后的值都为自己本身
c = 4 % 6;// 4
</script>
4. 交换值
交换a和b的值
<script>
var a = 1,
b = 2;
//方式一
var c = a;
a = b ;
b = c ;
//方式二
a = a + b;
b = a - b;
a = a - b;
</script>
以后面试题中不允许声明新值时,就用方式二
5. ++、--
<script>
var a = 1;
console.log(a++)// 输出1
/先打印后运算
var a = 1;
console.loh(++a) //输出2
/先运算后打印
var a = 5,
b;
b = a++ + 1; //执行玩这句后,a再++
console.log(b,a); //6,6
b = ++a + 1;
console.log(b,a); //7,6
b = a-- + --a //8,3
/此处可理解为-- 优先级大于+ 所以先--a 再去相加; a减1后相当于4+4=8 执行完后再减1;
b = a-- * --a //16,3
b = a-- * --a //0,3
/ --的优先级也大于 * / %
</script>
新领悟的知识点:--、++的优先级也大于 + - * / %
6. 比较运算符
<script>
/number遇到str 先将字符串转换为number 在进行比较
var bool = 1 > '2';
console.log(a); //false
/string 遇到 string 将比较字符串间各个字符的ASCII码的大小,直到比较出大小为止
var bool = 'acd' > 'abw' //true
/因为第二个字符对应ASCII码 c > b 比较停止 返回布尔值
var bool = 'abcdefghigk' > "b" //false
/第一个就停止了
/string 遇到 string,不会转化为number 直接进行ASCII码进行比较 4的ASCII码大于1 比较结束 返回true
var bool = '4.5' > '11' //true /string类型之间的比较
var bool = 4.5 > 11 //false /number类型之间的比较
//相等是不看数据类型的
var bool = 1 == '1'; //true
//全等是要看数据类型是否相等
var bool = 1 === '1' //false
/NaN 与包括自己在内的任何东西都不相等
var bool = NaN == NaN; //false
</script>
7.逻辑运算符
除undefined、null、NaN、''、0、false为假外其余(如[]、{}等)皆为真
<script>
/遇到真就往后走,遇到假或者走到最后就返回当前的值
1 && 1 //返回1
0 && 1 //0
1 && 0 //0
0 && 0 //0
/遇到假就往后走,遇到真或者走到最后就返回当前的值
1 || 1 //1
0 || 1 //1
1 || 0 //1
0 || 0 //0
console.log(name || '未找到数据');
||也可以用来设置默认值
a.onclick = function(e){
/IE低版本浏览器的数据保留在window.event中, 而非IE浏览器的直接保存在上面括号内的e中
var event = e || window.event
}
var a= [] && 1;
console.log(a);//返回1
var a={} && 1;//返回1
console.log(a);//返回1
var a= [] && {};
console.log(a);//返回object
console.log(typeof(a));//object
</script>
三.判断分支
1.if语句
(1)if条件互斥性,如果互斥的就一定不可以分开写,就要使用else if
(2)使用五个if需要判断五次,如果一直使用else if,只需要判断一次寻找满足的条件就行了(使用else后大大降低了算法的时间)
2.switch
if和switch 适用场景不同:有些场景更适合switch,所以说switch暂时不会被if这些淘汰
switch更直观
一般来说如果值有范围并且条件多个时用 if如上文中的查成绩
但是定值用 而且这个定值有多个就用 switch 如下文中的查城市薪资
<script>
switch (city) {
case '北京': console.log('15k'); break;
case '上海': console.log('13k'); break;
case '深圳': console.log('12k'); break;
case '广州': console.log('11k'); break;
default:console.log('9k');
}
</script>
四.注释
行注释: //
块注释: /*
*
*
*
*/
每一行写上* 格式好一些 就好比 运算符 + - * / 空一格更好
五.实战任务 window.prompt
<script>
/用window.prompt()接收星期几,填写上午下午,在页面显示出生活计划,比如周六下午安排打球
var weekday = window.prompt("你的计划");
var time = window.prompt("上午还是下午");
var schedule = {
星期一 :['上课','踢球'],
星期二 :['下课','练琴'],
星期三 :['上语文课','健身'],
星期四 :['上数学课','吉他'],
星期五 :['上英语课','棒球'],
星期六 :['上计算机课','橄榄球'],
星期天 :['上体育课','打篮球'],
}
switch (weekday){
case "星期一":
if(time == '上午'){
document.write(weekday + time + "的安排是" +schedule[weekday][0]);
}else if(time == '下午'){
document.write(weekday + time + "的安排是" +schedule[weekday][1]);
}
break;
case "星期二":
if(time == '上午'){
document.write(weekday + time + "的安排是" +schedule[weekday][0]);
}else if(time == '下午'){
document.write(weekday + time + "的安排是" +schedule[weekday][1]);
}
break;
case "星期三":
if(time == '上午'){
document.write(weekday + time + "的安排是" +schedule[weekday][0]);
}else if(time == '下午'){
document.write(weekday + time + "的安排是" +schedule[weekday][1]);
}
break;
case "星期四":
if(time == '上午'){
document.write(weekday + time + "的安排是" +schedule[weekday][0]);
}else if(time == '下午'){
document.write(weekday + time + "的安排是" +schedule[weekday][1]);
}
break;
case "星期五":
if(time == '上午'){
document.write(weekday + time + "的安排是" +schedule[weekday][0]);
}else if(time == '下午'){
document.write(weekday + time + "的安排是" +schedule[weekday][1]);
}
break;
case "星期六":
if(time == '上午'){
document.write(weekday + time + "的安排是" +schedule[weekday][0]);
}else if(time == '下午'){
document.write(weekday + time + "的安排是" +schedule[weekday][1]);
}
break;
case "星期天":
if(time == '上午'){
document.write(weekday + time + "的安排是" +schedule[weekday][0]);
}else if(time == '下午'){
document.write(今天是+"schedule[weekday][1]");
}
break;
}
</script>