一、项目常出现的报错:
1. 语法错误:SyntaxError
- 所有语句都不会执行。
2.声明错误:ReferenceError
- 产生的原因:变量未经声明就进行使用或函数未经声明就进行调用。
- 错误语句之前的语句会执行,之后的不会执行。
- 不同脚本块相互独立,错误不会互相影响。
二、运算符:+ - * / ++ -- %
1.知识点:
- a++(a--):在运算后自增(自减)1;
- ++a(--a):在运算前自增(自减)1;
-
、<、==、===、!=、!==(比较运算符):
- 比较的数值类型包含number类型的,会转换成number类型比较;
- 比较的数值类型为string类型,则从左往右比较字符串对应的ASCII码;
- ==:相等比较数值,不看数据类型,数值相等返回true;NaN与包括自己在内的任何东西都不相等,即NaN与任何东西比较都返回false
- ===:全等要数值、数据类型一样才返回true;
- 表达式中包含运算符的运算,会把变量通过Number()隐式转换成number类型再进行运算,不能转换为number类型的数值,则会变成NaN。
| 类型 | 结果->Number(类型) |
|---|---|
| true | 1 |
| false | 0 |
| null | 0 |
| [ ] | 0 |
| "" | 0 |
| { } | NaN |
| undefined | NaN |
2.运算符demo:
2.1 + - * / :
/**
* +、-(加/减操作符)
* 1. + ,如果表达式中包含字符串,+就是连接符;如果表达式中只包含number类型,+就是进行加法运算
* 2. - * /, 如果表达式中包含字符串,会调用Number()隐式转换转换成number类型再进行运算,如果不能
* 转换为number类型,则会变成NaN
**/
// +
var a = 1 + "2" ; // "12" -> 连接符
var b = 1 + 2 ; // 3 -> 加号
// - * /
var c = 5 - 2 ; // 3
var d = 5 - "2t"; // NaN
var e = 1 + true; // 2 -- Number(true) = 1 ;
var e = 1 + false; // 1 -- Number(false) = 0 ;
var f = 5 * '5'; // 25
var g = 6 / '2t'; // NaN
var h = 1 / 0; // Infinity (正无穷)
var h = 1 / -0; // -Infinity (负无穷)
2.2 ++、--(递增/递减):
/**
* 1. a++(a--):在运算后自增(自减)1
* 2. ++a(--a):在运算前自增(自减)1
**/
var a = 1;
console.log(a++); // 1 --> 在运算后自增1,所以还是1
console.log(a); // 2
console.log(++a); // 3 --> 在运算前自增1,,所以还是2+1=3
var a = 5,
b ;
b = --a + (a--); // 8 --> 4 + 4
2.3 %(取模/取余)
5 % 4 = 1; // 5 / 4 = 1 余1 ,所以模为1
6 % 2 = 0; //6可以整除2,没有余数,所以模为0
4 % 5 = 4; // 4比5小,取模,直接取小的数值
2 % 7 = 2; //2
2.4 >、<、==、===、!=、!==:结果返回boolean类型-->true,false
- number类型比较:比较数值大小;
- string类型比较:比较字符串对应的ASCII码(字符相对应的十进制代码),多个字符的,从左往右依次对比,直到比较出ASCII码的大小为止;
- 含有number类型或者boolean类型的,先转换成number类型再进行比较,如果不能转换成number类型,则是NaN,那它们比较的结果都为false;
- == :判断数值是否相等;===:判断数值、数据类型是否相等,有一个不同都返回false;
// 1.number类型比较:
var a = 1 > 2 ; // false
var b = 2 > true ; //true --Number(true) = 1;
// 2.string类型比较:比较字符串对应的ASCII码,多个字符的,从左往右依次对比,
// 直到比较出ASCII码的大小为止
var a = 'a' > 'b'; //false a对应的ASCII码-10 < b对应的ASCII码-11
var b = 'abc' > 'aab'; // true 按顺序逐个比较字符的ASCII码 b->11 > a->10
//3.含有number类型或者boolean类型的比较
var a = 1 > 'a'; // false Number('a') -> NaN
var b = 1 < 'a' ; //false Number('a') -> NaN
var c = 2 > true; //true Number(true) -> 1
//4. == 与 ===
1 == true ; // true Number(true) -> 1
1 === true ; // false ,1:number类型;true:boolean类型
2.5 &&、|| 、!
- undefined、null、NaN、''、0、false,为假,除以上之外都为真。
2.5.1 && :与运算符
- 遇到真就往后走;
- 遇到假或者走到最后就返回当前值;
- 用 &&表达式印证if判断:表达式里面所有的值都为true才返回true,有一个值为false都返回false;
var a = true && ''; // '' -> false
var a = 'str' && NaN; // NaN -> false
//表达式里面所有的值都为true才返回true,有一个值为false都返回false
//true:真,'':假,遇到真就往后走,遇到假或者走到最后就返回当前值;遇到''为假,所以返回false
if(true && ''){
console.log("真-true")
}else{
console.log("假-false")
}
//打印结果:假-false
//因为 true && '' --> '';''为false,所以打印"假-false"
2.5.2 || :或运算符
- 遇到假就往后走;
- 遇到真或者走到最后就返回当前值;
- 用 || 表达式印证if判断:表达式里面只要有一个值为true都返回true;
var a = true || ''; // '' -> true
var a = 'str' || NaN; // 'str' -> true
//表达式里面只要有一个值为true都返回true
//'str':真,遇到真或者走到最后就返回当前值;所以返回'str'
if('str' || NaN){
console.log("真-true")
}else{
console.log("假-false")
}
//打印结果:真-true
//因为 'str' || NaN --> 'str';'str'true,所以打印"真-true"
2.5.3 !:非运算符
- !逻辑非操作符->取反
- !表达式的值会转换为boolean类型再取反: !value -> ! Boolean(value)
!null; // true --> Boolean(null) -> false ; !false -> true (false取反)
!1; //false --> Boolean(1) -> true ; !true -> false (true取反)
三、判断分支:if 、switch
判断分支的使用:一般要判断值范围的,或者条件是多个的时候用if判断比较好,如果值是固定的多个值用switch语句比较好;
// if
var a = 60;
if(a > 50 && a < 70){
console.log("在范围内。");
}else{
console.log("不在范围内。");
}
// switch
switch (type) {
case "已认证": // --> type的值
return "success"; // 返回结果
break; // 终止循环,所在的循环体已结束;
case "未认证":
return "warning";
break;
}
四、注释: // 单行注释 /**/多行注释
// 单行注释
/**
* 多行注释
*
*/