一、书写的语法规范
1、养成良好的习惯,语句结尾写分号。除了一下if、for、switch、function等不需要写,其他都写上。
2、符号两头都需要加上空格!如var a = b + c;
二、错误
1、语法错误,全部代码都不会执行。
2、引用错误,中断执行,错误后面的代码都不执行。
3、脚本块与脚本块之间的错误是不会互相影响的。
注:后面会系统将错误。此处大概了解一下即可。
三、运算符
1、基本的+-*/%()就不说了
2、关于+号运算符
1、任意数据类型的值与字符串相加都会变成字符串,
如 '123' + false = '123false'、'123' + undefined = '123undefined'
2、运算按照常规自左向右加。如 'str' + 1 + 1 = 'str11'; 1 + 1 + 'str' + (1 + 1) = '2str2'
3、关于/号
正常的除法就不多说了。
1、特殊的 0 / 0 = NaN。Not a Number.
2、NaN的数据类型为Number。
3、1 / 0 = Infinity。数据类型为Number。
4、-1 / 0 = -Infinity。数据类型为Number。
四、关于如何交换值
1、使用中转变量
var a = 1,
b = 2;
var c = a;
a = b;
b = c;
2、镜像置换法(不用声明新的变量)
var a = 1,
b = 2;
a = a + b;
b = a - b;
a = a - b;
五、关于自增自减运算符
++、--都是比较简单的。我们只需要记住,符号在前面,那么就是先运算后操作,符号在后面,就是先操作后运算。
如 var a = 1;
console.log(++a); // 先运算,后操作 --> 2
console.log(a--); // 先操作,后运算 --> 2
难题1:
var a = 5, b;
b = a-- + --a;
console.log(a, b)
注意这道题,一个在前自减一个后自减,因为后自减先不算,直接取值,但是!这里不是直接取5,因为后边有一个--a,这个是先对a进行运算,所以a的值就变为4了。所以b = 4 + 4 = 8;注意不是 5 + 4 = 9哈。
难题2:
var a = 5, b;
b = --a + --a;
console.log(a, b)
这道题又是一个坑。a最后肯定是3毫无疑问。但是b呢?b的值为7。因为两个--是各自独立的。第一个--a时,a = 4,第二个--a时,a=3;4 + 3 = 7;
六、关于比较运算符
<、>、>=、<=、==、===、!=、!==
难点:
1、数字与数字字符串相比,字符串转化为数字在进行比较
如 1 < '12' ===> true,因为'12'会转化为数字在进行数字间的比较。
2、数字与不是数字的字符串相比,则都为false
如 1 < 'ac' 或者 1 > 'ac' ,都是false
3、字符串之间的比较,按每个字符位置进行对比
如 'ab' > 'bcd' ===> 先使用左边字符串'ab'中的'a'的ASCII码与右边字符串'bcd'中的'b'的ASCII码进行比较,发现'b'的ASCII比'a'的ASCII大,则得出结果false。如果两个ASCII一样,则继续往下一个字符对比。
4、关于==与===的区别
值比较值是不是相等,而不关心其数据类型。如null == undefined是true
而===的意思是全等,即数据类型与值都必须得相等才能为true
5、关于NaN
NaN是唯一一个与包括自己在内的任何东西都不相等的值。
如NaN === NaN、NaN ==NaN都是false。
七、条件判断
if...else if...else
switch
什么时候用if,什么时候用switch?
1、一般来说,判断某一个范围的,比如成绩范围,用if合适;
2、如果是定值的,用switch合适,因为switch是匹配相同的值,比如给定某个城市查询平均薪资。
八、逻辑运算符
1、为假的几个值
undefined、null、NaN、""、0、false
除了上面6个值,其他值全部都是真
2、&& 与 || 的规律(重要)
1. &&
遇到真就往后走,遇到假或者走到最后就返回当前的值(注意是返回当前的值,而不是返回true/false)。一假则假的道理。
1 && 1 返回1 真
1 && 0 返回0 假
0 && 1 返回0 假
0 && 0 返回0 假
2. ||
遇到假就往后走,遇到真或者走到最后就返回当前的值(注意是返回当前的值,而不是返回true/false)。一真则真的道理。
1 || 1 返回1 真
1 || 0 返回1 真
0 || 1 返回1 真
0 || 0 返回0 假
3、取反!
取反返回的结果是布尔值,如!2 == false;
九、注释
1、行注释 //
2、块注释 (注意块注释每行的开头都要星号*,养成习惯)
/*
*
*/