语句与函数¶
运算符¶
算数运算符¶
let num = 1 + 1; // 2,加
let num = 2 - 1; // 1,减
let num = 1 * 2; // 2,乘
let num = 5 / 2; // 2.5,除
let num = 2 ** 3; // 8,求幂
let num = 5 % 2; // 0.5,取余
let num = Math.floor(5 / 2); // 2,取整
// 递增
let x = 1;
let y = x++; // 先赋值,后递增
let z = ++x; // 先递增,后赋值
// 递减
let x = 1;
let y = x--; // 先赋值,后递增
let z = --x; // 先递增,后赋值
比较运算符¶
JS是弱类型语言,不同类型比较时可能会存在隐式转换
推荐使用严格比较符(数据类型和值都相同)避免因此带来的隐患
let bool3 = (2 > 1); // true
let bool4 = (2 < 1); // flase
let bool5 = (2 >= 1); // true
let bool6 = (2 <= 1); // flase
let bool1 = (5 == "5"); // true
let bool2 = (5 != "5"); // false
let bool7 = (5 === "5"); // flase 严格相等
let bool8 = (5 !== "5"); // true 严格不等
逻辑运算符¶
true && false; // 与
true || false; // 或
!true; // 非
in¶
检查某个值或键是否存在
语句¶
条件语句¶
if () {} else {}
let x = 1;
if (x === 0) {
console.log("x=0");
} else if (x === 1) {
console.log("x=1");
} else {
console.log("x=other");
}
- 简写:三元运算符
const r = x > y ? x : y; // 如果 x>y 则 r=x,否则 r=y
switch () {}
switch (x) {
case 0:
console.log("0");
break; // 每条case必须要有break语句,否则将继续执行后面的语句
case 1:
console.log("1");
break;
case 2:
console.log("2");
break;
default:
console.log(">=3");
break;
}
循环语句¶
for (声明循环变量赋初始值; 循环条件; 增量表达式) {执行语句}
for (let i = 0; i < 3; i++) {
console.log(`i 当前的值为:${i}`);
}
while (循环条件) {增量表达式}
let i = 0
while (i < 3) {
console.log(`i 当前的值为:${i}`)
i++
}
do {增量表达式} while (循环条件)
无论条件是否为真,先执行一次语句,再做判断循环
let i = 0
do {
console.log(`i 当前的值为:${i}`);
i++;
} while (i < 3);
跳转语句¶
break
跳出循环continue
跳过本次循环,进入下次循环
在嵌套循环中,直接跳出或者跳到指定标签处,而无需一层层执行。
outerLoop: // 给循环设置一个标签
for (let i = 0; i < 5; i++) {
for (let j = 0; j < 5; j++) {
console.log(`i=${i}, j=${j}`);
if (i == 2 && j == 2) {
break outerLoop; // 跳出标签为 outerLoop 的循环
}
}
}
函数¶
function sum(x=0, y=0) {
return arguments[0] + y;
// 如果没有return语句则返回undefined
// arguments 对象包含所有参数,arguments.length 返回参数个数
}
sum(1, 2); // 3
sum(1) // 1,y使用默认值
sum(undefined, 2) // 2,x使用默认值
sum.name // 获取函数的名字,匿名函数返回变量名
sum.length // 返回函数的参数个数,如果有默认值,会返回0
- 解构式传参
function sum({x=0, y=0}) {
return x + y;
}
sum({x:1, y:2}) // 3
- 扩展运算符
function addNumbers(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
// 使用扩展运算符将数组中的元素展开作为函数的参数
const result = addNumbers(...numbers);
console.log(result); // 输出: 6
匿名函数¶
- 函数表达式
let sum = function(x, y) {
return x + y;
}; // 注意末尾要带分号,表示赋值语句结束
data: function () { pass } // 可简写为 data () { pass }
- 箭头函数
ES6 新增
let sum = (x, y) => {
return x + y;
}
// 只有一个 return 语句时,可不写 return,并省略掉花括号
let y = x => x * x;
闭包¶
函数嵌套时,内部函数被外部函数 return,即可形成一个闭包,无论内部函数是否使用到外部函数的变量
闭包常用于封装私有变量
function createGreeting(greetingPrefix) {
return function(name) {
console.log(greetingPrefix + ', ' + name);
};
}
const greetHello = createGreeting('Hello');
greetHello('John'); // 输出: Hello, John
内置函数¶
// alert
alert("Hello"); // 弹出模态窗
// confirm()
let isTrue = confirm("true or false"); // 第一个模态窗,显示:内容、确定按钮、取消按钮
alert(`You select ${isTrue}`); // 第二个模态窗:确定isTrue=true,取消isTrue=false
// prompt(title, [default])
let age = prompt('How old are you?', 100); // 第一个模态窗,显示:标题、带默认值的输入框、确定按钮、取消按钮
alert(`You are ${age} years old!`); // 第一个模态窗:确定age=100,取消age=null