1.1 运算符的分类
JavaScript中常用的运算符有:
算数运算符
递增和递减运算符
比较运算符
逻辑运算符
赋值运算符
1.2 算数运算符
- 浮点数的精度问题
浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数。var result = 0.1 + 0.2; // 结果不是 0.3,而是:0.30000000000000004
console.log(0.07 * 100); // 结果不是 7, 而是:7.000000000000001
1.3 递增和递减运算符
**注意**:递增和递减运算符必须和变量配合使用。
递增运算符
- 前置递增运算符
- ++num 前置递增,就是自加1,类似于 num = num + 1,但是 ++num 写起来更简单。
使用口诀:先自加,后返回值
var num = 10;
alert(++num + 10); // 21
后置递增运算符
- num++ 后置递增,就是自加1,类似于 num = num + 1 ,但是 num++ 写起来更简单。
- 使用口诀:先返回原值,后自加
var num = 10;
alert(10 + num++); // 20
1.4 比较运算符
- 比较运算符返回值布尔类型
- 等号比较
console.log(18 == '18');//true
console.log(18 === '18'); //flase 全等要求值和数据类型一致
= //赋值 把右边给左边
== //判等 判断两边值是否相等(有隐式转换)
== //全等 判断两边的值和数据类型是否完全相同
1.5 逻辑运算符
- 逻辑与&&
- 两边都是 true才返回 true,否则返回 false
var a = 2 > 1 && 3 > 1;//true
var a = 2 > 1 && 3 < 1;//flase
//如果第一个表达式的值为真,则返回表达式2
console.log( 123 && 456 ); // 456
//如果第一个表达式的值为假,则返回表达式1
console.log( 0 && 456 ); // 0
- 逻辑或 ||
- 两边都是 true才返回 true,否则返回 false
var a = 2 > 3 || 1 < 2;//true
var a = 2 > 3 || 1 > 2;//flase
如果第一个表达式的值为真,则返回表达式1
console.log( 123 || 456 ); // 123
如果第一个表达式的值为假,则返回表达式2
console.log( 0 || 456 ); // 456
逻辑非 !
逻辑非(!)也叫作取反符,用来取一个布尔值相反的值,如 true 的相反值是 falsevar isOk = !true;
console.log(isOk); // false
短路运算(逻辑中断)
短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值;- 逻辑与 &遇到false 就不执行 一假及为假
``` 如果第一个表达式的值为真,则返回表达式2 ```
如果第一个表达式的值为假,则返回表达式1
console.log( 123 && 456 ); // 456
console.log( 0 && 456 ); // 0
console.log( 123 && 456&& 789 ); // 789
- 逻辑或
- 语法: 表达式1 || 表达式2
- 一真及为真
- 逻辑或||遇到true 就不执行
如果第一个表达式的值为真,则返回表达式1
如果第一个表达式的值为假,则返回表达式2
console.log( 123 || 456 ); // 123
console.log( 0 || 456 ); // 456
console.log( 123 || 456 || 789 ); // 123
- 一元运算符里面的逻辑非优先级很高
- 逻辑与比逻辑或优先级高
1.6 赋值运算符
概念:用来把数据赋值给变量的运算符。
var age = 10;
age += 5; // 相当于 age = age + 5;
age -= 5; // 相当于 age = age - 5;
age *= 10; // 相当于 age = age * 10;
2.0 流程控制
2.1 三元表达式
语法结构
表达式1 ? 表达式2 : 表达式3;
执行思路
- 如果表达式1为 true ,则返回表达式2的值,如果表达式1为 false,则返回表达式3的值
- 简单理解: 就类似于 if else (双分支) 的简写
2.2 switch分支流程控制
switch小括号里面的值要与case里的值全等
switch( 表达式 ){
case value1:
// 表达式 等于 value1 时要执行的代码
break;
case value2:
// 表达式 等于 value2 时要执行的代码
break;
default:
// 表达式 不等于任何一个 value 时要执行的代码
}
- 关键字 switch 后面括号内可以是表达式或值, 通常是一个变量
- 关键字 case , 后跟一个选项的表达式或值,后面跟一个冒号
- switch 表达式的值会与结构中的 case 的值做比较
- 如果存在匹配全等(===) ,则与该 case 关联的代码块会被执行,并在遇到 break 时停止,整个 switch 语句代码执行结束
- 如果所有的 case 的值都和表达式的值不匹配,则执行 default 里的代码
注意: 执行case 里面的语句时,如果没有break,则继续执行下一个case里面的语句。
2.3 switch 语句和 if else if 语句的区别
- 一般情况下,它们两个语句可以相互替换
- switch…case 语句通常处理 case为比较确定值的情况, 而 if…else…语句更加灵活,常用于范围判断(大于、等于某个范围)
- switch 语句进行条件判断后直接执行到程序的条件语句,效率更高。而if…else 语句有几种条件,就得判断多少次。
- 当分支比较少时,if… else语句的执行效率比 switch语句高。
- 当分支比较多时,switch语句的执行效率比较高,而且结构更清晰。
3.0 数据类型
3.1 数据类型的分类
- 简单数据类型 (Number,String,Boolean,Undefined,Null)
- 复杂数据类型 (object)
3.2 数字型 Number
JavaScript 数字类型既可以用来保存整数值,也可以保存小数(浮点数)。
var age = 21; // 整数
var Age = 21.3747; // 小数
数字型进制
最常见的进制有二进制、八进制、十进制、十六进制。
// 1.八进制数字序列范围:0~7
var num1 = 07; // 对应十进制的7
var num2 = 019; // 对应十进制的19
var num3 = 08; // 对应十进制的8
// 2.十六进制数字序列范围:0~9以及A~F
var num = 0xA;
3.3 isNaN
用来判断一个变量是否为非数字的类型,返回 true 或者 false
var usrAge = 21;
var isOk = isNaN(userAge);
console.log(isNum); // false ,21 不是一个非数字
var usrName = "andy";
console.log(isNaN(userName)); // true ,"andy"是一个非数字
3.4 字符串型 String
字符串型可以是引号中的任意文本,其语法为 双引号 “” 和 单引号’’
var strMsg = "奥里给"; // 使用双引号表示字符串
var strMsg2 = '奥里给~'; // 使用单引号表示字符串
// 常见错误
var strMsg3 = 奥里给; // 报错,没使用引号,会被认为是js代码,但js没有这些语法
3.5 字符串转义符
类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符。
转义符都是 \ 开头的,常用的转义符及其说明如下:
转义符 | 解释说明 |
---|---|
\n | 换行符,n 是 newline 的意思 |
\ \ | 斜杠 \ |
‘ | ‘ 单引号 |
“ | ”双引号 |
\t | tab 缩进 |
\b | 空格 ,b 是 blank 的意思 |
3.6 字符串长度
字符串是由若干字符组成的,这些字符的数量就是字符串的长度。通过字符串的 length 属性可以获取整个字符串的长度。
var strMsg = "我是!";
alert(strMsg.length); // 显示 3
3.7 字符串拼接
console.log('我' + 18); // 只要有字符就会相连
var age = 18;
console.log('我' + age); // 我18
console.log('我' + age + '岁啦'); // 我18岁啦
+ 号总结口诀:数值相加 ,字符相连
- 经常会将字符串和变量来拼接,变量可以很方便地修改里面的值
- 变量是不能添加引号的,因为加引号的变量会变成字符串
- 如果变量两侧都有字符串拼接,口诀“引引加加 ”,删掉数字,变量写加中间
3.8 布尔型Boolean
布尔类型有两个值:true 和 false ,其中 true 表示真(对),而 false 表示假(错)。
布尔型和数字型相加的时候, true 的值为 1 ,false 的值为 0。
console.log(true + 1); // 2
console.log(false + 1); // 1
3.9 Undefined和 Null
一个声明后没有被赋值的变量会有一个默认值undefined ( 如果进行相连或者相加时,注意结果)
var variable;
console.log(variable); // undefined
console.log('你好' + variable); // 你好undefined
console.log(11 + variable); // NaN
console.log(true + variable); // NaN
一个声明变量给 null 值,里面存的值为空
var vari = null;
console.log('你好' + vari); // 你好null
console.log(11 + vari); // 11
console.log(true + vari); // 1
4.0 数据类型转换
4.1转换为布尔型
- 代表空、否定的值会被转换为 false ,如 ‘’、0、NaN、null、undefined
- 其余值都会被转换为 true
console.log(Boolean('')); // false
console.log(Boolean(0)); // false
console.log(Boolean(NaN)); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean('小白')); // true
console.log(Boolean(12)); // true
4.2 转换为字符串
toString() 和 String()
alert(num.toString());
alert(String(num));
还有+号字符串拼接
4.3 转换为数字型
parseInt String()函数//将String转换成整数类型
parseFloat String()函数//将String转换成浮点类型
Number()强制转换函数//将String转换成数值类型
隐式转换( - * /)//利用算数转换为数字类型