运算符
JavaScript 中的运算符和 Java 用法基本相同,此处不做详细介绍了。
算术运算符
+-*/%
赋值运算符 & 复合赋值运算符
=+=-=*=/=%=
自增自减运算符
++: 自增 1--: 自减 1
比较运算符
<><=>===:比较相等(会进行隐式类型转换)!====:比较相等(不会进行隐式类型转换)!==
逻辑运算符
用于计算多个 boolean 表达式的值。
&&:与(一假则假)||:或(一真则真)!:非
位运算
&:按位与|:按位或~:按位取反^:按位异或
移位运算
<<:左移>>:有符号右移(算术右移)>>>:无符号右移(逻辑右移)
条件语句
if 语句
基本语法格式 条件表达式为 true,则执行 if 的{}中的代码
javascript
// 形式1
if (条件) {
语句
}
// 形式2
if (条件1) {
语句1
} else {
语句2
}
// 形式3
if (条件1) {
语句1
} else if (条件2) {
语句2
} else if ...... {
语句...
} else {
语句N
}
练习案例
- 代码示例 1: 判定一个数字是奇数还是偶数
javascript
var num = 10;
if (num % 2 == 0) {
console.log("num 是偶数");
} else {
console.log("num 是奇数");
}
注意!不能写成num % 2 == 1就是奇数,负的奇数 %2 结果可能是 - 1。
- 代码示例 2: 判定一个数字是正数还是负数
javascript
var num = 10;
if (num > 0) {
console.log("num 是正数");
} else if (num < 0) {
console.log("num 是负数");
} else {
console.log("num 是 0");
}
- 代码示例 3: 判定某一年份是否是闰年
javascript
var year = 2000;
if (year % 100 == 0) {
// 判定世纪闰年
if (year % 400 == 0) {
console.log("是闰年");
} else {
console.log("不是闰年");
}
} else {
// 普通闰年
if (year % 4 == 0) {
console.log("是闰年");
} else {
console.log("不是闰年");
}
}
三元表达式
是if else的简写写法。
条件 ? 表达式1 : 表达式2
条件为真,返回表达式 1 的值;条件为假,返回表达式 2 的值。注意,三元表达式的优先级是比较低的。
switch
更适合多分支的场景。
javascript
switch (表达式) {
case 值1:
语句1;
break;
case 值2:
语句2;
break;
default:
语句N;
}
用户输入一个整数,提示今天是星期几
javascript
var day = prompt("请输入今天星期几:");
switch (parseInt(day)) {
case 1:
console.log("星期一");
break;
case 2:
console.log("星期二");
break;
case 3:
console.log("星期三");
break;
case 4:
console.log("星期四");
break;
case 5:
console.log("星期五");
break;
case 6:
console.log("星期六");
break;
case 7:
console.log("星期日");
break;
default:
console.log("输入有误");
}
循环语句
重复执行某些语句
while 循环
while (条件) {
循环体;
}
执行过程:
- 先执行条件语句
- 条件为 true,执行循环体代码
- 条件为 false,直接结束循环
代码示例 1: 打印 1-10
javascript
var num = 1;
while (num <= 10) {
console.log(num);
num++;
}
代码示例 2: 计算 5 的阶乘
javascript
var result = 1;
var i = 1;
while (i <= 5) {
result *= i;
i++;
}
console.log(result)
continue
结束这次循环(比如:吃五个李子,发现第三个李子有虫子,扔掉这个,继续吃下一个)
javascript
var i = 1;
while (i <= 5) {
if (i == 3) {
i++;
continue;
}
console.log("我在吃第" + i + "个李子");
i++;
}
输出结果:
javascript
我在吃第1个李子
我在吃第2个李子
我在吃第4个李子
我在吃第5个李子
代码示例:找到 100-200 中所有 3 的倍数
javascript
var num = 100;
while (num <= 200) {
if (num % 3 == 0) {
num++; // 这里的++不要忘记!否则会死循环
continue;
}
console.log("找到了3的倍数,为:" + num);
num++;
}
break
结束整个循环(比如:吃五个李子,发现第三个有虫子,剩下的也不吃了)
javascript
var i = 1;
while (i <= 5) {
if (i == 3) {
break;
}
console.log("我在吃第" + i + "个李子");
i++;
}
输出结果
javascript
我在吃第1个李子
我在吃第2个李子
代码示例:找到 100-200 中第一个 3 的倍数
执行结果:
javascript
找到了3的倍数,为:102
for 循环
javascript
for (表达式1; 表达式2; 表达式3) {
循环体
}
- 表达式 1: 用于初始化循环变量
- 表达式 2: 循环条件
- 表达式 3: 更新循环变量
执行过程:
- 先执行表达式 1,初始化循环变量
- 再执行表达式 2,判定循环条件
- 如果条件为 false,结束循环
- 如果条件为 true,则执行循环体代码
- 执行表达式 3,更新循环变量
代码示例:计算 5 的阶乘
javascript
var result = 0;
for (var i = 1; i <= 5; i++) {
result *= i;
}
console.log("result = " + result);
数组
创建数组
- 使用 new 关键字创建
javascript
// Array的A要大写
var arr = new Array();
- 使用字面量方式创建(常用)
javascript
var arr = [];
var arr2 = [1, 2, 'haha', false]; // 数组中保存的内容称为"元素"
注意: JS 的数组不要求元素是相同类型。这一点和 C、C++、Java 等静态类型语言差别很大,但是 Python、PHP 等动态类型语言也是如此。
获取数组元素
使用下标的方式访问数组元素(从 0 开始)
javascript
var arr = ["小狐佩奇", "小猪乔治", "小羊苏西"];
console.log(arr);
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);
arr[2] = "小狐凯迪";
console.log(arr);
如果下标超出范围读取元素,则结果为 undefined:
javascript
console.log(arr[3]); // undefined
console.log(arr[-1]); // undefined
注意:不要给数组名直接赋值,此时数组中的所有元素都没了。(相当于本来 arr 是一个数组,重新赋值后变成字符串了)
javascript
var arr = ["小狐佩奇", "小猪乔治", "小羊苏西"];
arr = "小狐凯迪";
新增数组元素
- 通过修改 length 新增相当于在末尾新增元素,新增的元素默认值为 undefined
javascript
var arr = [9, 5, 2, 7];
arr.length = 6;
console.log(arr);
console.log(arr[4], arr[5]);
输出结果:
javascript
(6) [9, 5, 2, 7, empty × 2]
undefined undefined
- 通过下标新增如果下标超出范围赋值元素,则会给指定位置插入新元素
javascript
var arr = [];
arr[2] = 10;
console.log(arr)
此时这个数组的 [0] 和 [1] 都是 undefined,输出结果:
javascript
Array(3)
2: 10
length: 3
__proto__: Array(0)
- 使用 push 进行追加元素 代码示例:给定一个数组,把数组中的奇数放到一个 newArr 中
javascript
var arr = [9, 5, 2, 7, 3, 6, 8];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0) {
newArr.push(arr[i]);
}
}
console.log(newArr);
删除数组中的元素
使用 splice 方法删除元素
javascript
var arr = [9, 5, 2, 7];
// 第一个参数表示从下标为 2 的位置开始删除,第二个参数表示要删除的元素个数是 1 个
arr.splice(2, 1);
console.log(arr);
// 结果
[9, 5, 7]
目前咱们已经用到了数组中的一些属性和方法:
arr.length: length 使用的时候不带括号,此时 length 就是一个普通的变量(称为成员变量,也叫属性)arr.push()、arr.splice(): 使用的时候带括号,并且可以传参数,此时是一个函数(也叫做方法)