二、基本语法,规范,错误,运算符,判断分支,注释
一、基本语法、规范、错误在这里插入代码片
1.1 基本语法、规范在这里插入代码片
分号代表语句结束,符号左右留空格
var a = 1 + 2;
1.2错误
错误分类:
- 语法错误:SyntaxError 程序无法执行
- 通用错误:例如:ReferenceError … 中断执行,中断前的语句正常执行
补充:同一个html文件中不同的<script>
内的错误互相之间不影响,无关。
二、运算符
2.1 算数运算符
+、-、*、/、%、()
2.1.1 运算方式
运算顺序:括号运算 > 普通运算符 > 赋值
字符串+任何数据类型的值都为字符串
除法:0/0 -> NaN:Not a Number-> 数字类型
1/0 ->Infinity -1/0 ->-Infinity
取余:0%6 -> 0
++,–
var a = 1,
b = 2;
//a++先返回再自增 1
console.log(a++);//1
console.log(a);//2
//++b先自增 1 再返回
console.log(++b);//3
//--x x--同理
2.1.2 交换值问题
问:如何交换两个变量的值
-
借用中间变量c
-
aba±-法
var a = 1, b = 2; var c = a, //第一种 a = b, b = c; a = a + b;//第二种 b = a - b; a = a - b;
2.2 比较运算符
<、>、<=、 >=、==、===、!=、 !==
返回值为布尔值
-
如果操作数都是数值,则执行数值比较。
-
如果操作数都是字符串,则逐个比较字符串中对应字符的ASCII码值。
-
如果有任一操作数是数值,则将另一个操作数转换为数值,执行数值比较。
例如:string遇上number会转化成number。
-
如果有任一操作数是布尔值,则将其转换为数值再执行比较。
字符串为非纯数字时,则将非数字字符串转成数字的时候会转换为NaN,当NaN和数字比较时不论大小都返回false.
console.log(10 > '6') //true
console.log(1160 > 'str') //false
console.log(10 > '') //true
字符串和字符串比较时,转换成ASCII码值进行比较。从左到右,一个字符一个字符的比较,有胜负则出结果。
console.log('a' > 'b') //false
其他:
1 == 1 //ture,相等不看数据类型
1 == '1' //ture 全等不只看,而且需要判断数据类型是否相等
1 === '1' //false
NaN == NaN //false NaN与包括自己在内的任何东西都不相等
2.3 逻辑运算符(&&与 ||或 !非)
以下值判断一定为假:undefined、null、NaN、0、空字符串、false。 除了这些,其他都是真。
var a = 1 && 2 && undefined && 10;
var b = 0 || null || 1 || 0;
console.log(a, b) // undefined 1
2.3.1 && ||
逻辑判断的方法:
- &&:遇到真就往后走,遇到假或者走到最后就返回当前的值;
- 1 && 1 返回1 真
- 0 && 1 返回0 假
- 1 && 0 返回0 假
- 0 && 0 返回0 假
- ||:遇到假就往后走,遇到真或者走到最后就返回当前的值;
- 1 || 1 返回1 真
- 0 || 1 返回1 真
- 1 || 0 返回1 真
- 0 || 0 返回0 假
||逻辑或常用位置:
- 两手准备取值或输出(类似于if判断)
- 鼠标点击事件,用来设置不同浏览器的兼容性
- …
var name = 'white';
console.log(name || '未找到数据')
a.onclick = function(e) {
var event = e || window.event //window.event对应IE浏览器鼠标点击事件相关信息
}
2.3.2 !非
var a = !1;
console.log(a); // false
三、判断分支
3.1 if
适用于判断条件是有范围的情况
if (条件) {
} else if (条件){
} else {
}//if else 连写只需要进行一次判断
对if来说,若条件都是互斥的则if不可以分开写。
问:if语句可以不写最后的else吗?不可缺少else的原因是什么?
答:必须写,最后一个else会对异常值/不期望出现的值进行处理,体现程序的完整性。
3.2 switch
适用于判断条件是多个定值的情况
switch (变量值) {
case 值:
语句;
break;
case 值:
语句;
break;
default: // 与 if 的 else 一样的功能:对异常值处理,保证程序完整性
语句
break;
}
break用来中断循环,switch借用来执行中断。
四、注释
// 行注释
/*
* xxx块注释
* xxx
*/