1.1 JavaScript 基础语法
JavaScript 是一种动态、弱类型的编程语言,广泛应用于网页开发、Node.js 后端等领域。
一、JavaScript 简介
特点
- 动态类型(无需声明类型)
- 脚本语言(解释执行)
- 面向对象(基于原型)
- 函数式编程支持
引入方式
html
<!-- 内联 -->
<script>
console.log("Hello, World!");
</script>
<!-- 外部文件 -->
<script src="script.js"></script>二、变量与常量
1. var(函数作用域,不推荐)
javascript
var name = "张三";
var age = 25;
// 可重复声明
var name = "李四"; // 不报错
// 变量提升
console.log(name); // undefined
var name = "张三";2. let(块级作用域,推荐)
javascript
let name = "张三";
let age = 25;
// 不可重复声明
// let name = "李四"; // 报错
// 块级作用域
{
let blockScoped = "块内变量";
}
// console.log(blockScoped); // 报错3. const(块级作用域,常量)
javascript
const PI = 3.14159;
// 必须初始化
const MAX_VALUE = 100;
// 不可重新赋值
// PI = 3.14; // 报错
// 对象属性可以修改
const user = { name: "张三" };
user.name = "李四"; // 可以三、数据类型
基本类型(7种)
javascript
// Number(数字)
let num = 42;
let float = 3.14;
let infinity = Infinity;
let notANumber = NaN;
// String(字符串)
let str1 = "双引号";
let str2 = '单引号';
let str3 = `模板字符串 ${num}`;
// Boolean(布尔)
let isTrue = true;
let isFalse = false;
// Undefined(未定义)
let undefinedValue;
// Null(空值)
let nullValue = null;
// Symbol(符号,ES6)
let sym = Symbol("description");
// BigInt(大整数,ES2020)
let bigNum = 9007199254740991n;引用类型
javascript
// Object(对象)
let obj = { name: "张三", age: 25 };
// Array(数组)
let arr = [1, 2, 3];
// Function(函数)
let func = function() { };
// Date(日期)
let date = new Date();
// RegExp(正则)
let regex = /\d+/;类型判断
javascript
// typeof
console.log(typeof 42); // "number"
console.log(typeof "hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object"(历史遗留问题)
console.log(typeof {}); // "object"
console.log(typeof []); // "object"
console.log(typeof function(){}); // "function"
// instanceof
console.log(arr instanceof Array); // true
console.log(date instanceof Date); // true
// Array.isArray
console.log(Array.isArray(arr)); // true
// Object.prototype.toString
Object.prototype.toString.call(null); // "[object Null]"
Object.prototype.toString.call(arr); // "[object Array]"四、运算符
1. 算术运算符
javascript
let num = 10;
+num; // 10
-num; // -10
num + 5; // 15
num - 5; // 5
num * 2; // 20
num / 2; // 5
num % 3; // 1 取余
num ** 2;// 100 幂运算
num++; // 11 自增(先返回后自增)
++num; // 12 自增(先自增后返回)
num--; // 11 自减
--num; // 102. 赋值运算符
javascript
let num = 10;
num += 5; // 15 等价于 num = num + 5
num -= 5; // 10 等价于 num = num - 5
num *= 2; // 20
num /= 2; // 10
num %= 3; // 1
num **= 2;// 13. 比较运算符
javascript
console.log(10 == "10"); // true 相等(类型转换)
console.log(10 === "10"); // false 严格相等
console.log(10 != "10"); // false 不等
console.log(10 !== "10"); // true 严格不等
console.log(10 > 5); // true
console.log(10 >= 10); // true
console.log(10 < 5); // false
console.log(10 <= 10); // true4. 逻辑运算符
javascript
let a = true, b = false;
a && b; // false 逻辑与(两者都为 true 才返回 true)
a || b; // true 逻辑或(任一为 true 就返回 true)
!a; // false 逻辑非
// 短路求值
true && console.log("执行"); // 执行
false && console.log("不执行"); // 不执行
true || console.log("不执行"); // 不执行
false || console.log("执行"); // 执行
// 空值合并(ES11)
let value = null ?? "默认值"; // "默认值"
let value2 = 0 ?? "默认值"; // 0(0 不是 null 或 undefined)5. 三元运算符
javascript
let age = 18;
let type = age >= 18 ? "成年" : "未成年";五、条件语句
1. if-else
javascript
let score = 85;
if (score >= 90) {
console.log("优秀");
} else if (score >= 80) {
console.log("良好");
} else if (score >= 60) {
console.log("及格");
} else {
console.log("不及格");
}2. switch
javascript
let day = "Monday";
switch (day) {
case "Monday":
console.log("星期一");
break;
case "Tuesday":
console.log("星期二");
break;
default:
console.log("其他");
}3. 三元运算符(简化 if-else)
javascript
let age = 18;
let message = age >= 18 ? "成年" : "未成年";六、循环语句
1. for 循环
javascript
// 基本 for 循环
for (let i = 0; i < 5; i++) {
console.log(i);
}
// 反向循环
for (let i = 5; i > 0; i--) {
console.log(i);
}2. while 循环
javascript
let i = 0;
while (i < 5) {
console.log(i);
i++;
}3. do-while 循环
javascript
let i = 0;
do {
console.log(i);
i++;
} while (i < 5);4. for...in(遍历对象属性)
javascript
let obj = { name: "张三", age: 25 };
for (let key in obj) {
console.log(key, obj[key]);
}
// 输出: name 张三, age 255. for...of(遍历数组/字符串)
javascript
let arr = [1, 2, 3];
for (let item of arr) {
console.log(item);
}
// 输出: 1, 2, 3七、类型转换
隐式转换
javascript
// 字符串拼接
let num = 10;
let str = "20";
console.log(num + str); // "1020"
// 数字运算
console.log("10" - 5); // 5
console.log("10" * 2); // 20
console.log("10" / 2); // 5
// 布尔转换
console.log(!!0); // false
console.log(!!""); // false
console.log(!!null); // false
console.log(!!undefined);// false
console.log(!!"hello"); // true
console.log(!!10); // true显式转换
javascript
// 转字符串
String(123); // "123"
(123).toString(); // "123"
123 + ""; // "123"
// 转数字
Number("123"); // 123
Number("abc"); // NaN
parseInt("123"); // 123
parseInt("12.5"); // 12
parseFloat("12.5"); // 12.5
// 转布尔
Boolean(0); // false
Boolean("hello"); // true八、字符串常用方法
javascript
let str = "Hello, World!";
// 长度
str.length; // 13
// 大小写
str.toUpperCase(); // "HELLO, WORLD!"
str.toLowerCase(); // "hello, world!"
// 查找
str.indexOf("World"); // 7
str.lastIndexOf("o"); // 8
str.includes("World"); // true
// 截取
str.slice(0, 5); // "Hello"
str.slice(-6); // "World!"
str.slice(0, -1); // "Hello, World"
str.substring(0, 5); // "Hello"(与 slice 类似,不支持负数)
str.substr(0, 5); // "Hello"(已废弃)
// 替换
str.replace("World", "JavaScript"); // "Hello, JavaScript!"
str.replace(/o/g, "a"); // "Hella, Warld!"
// 分割
str.split(","); // ["Hello", " World!"]
// 去空格
str.trim(); // 去除首尾空格
str.trimStart(); // 去除首部空格
str.trimEnd(); // 去除尾部空格
// 字符
str[0]; // "H"
str.charAt(0); // "H"
str.charCodeAt(0); // 72(ASCII 码)九、数值常用方法
javascript
let num = 3.14159;
// 舍入
Math.round(num); // 3(四舍五入)
Math.floor(num); // 3(向下取整)
Math.ceil(num); // 4(向上取整)
Math.trunc(num); // 3(直接取整数部分)
// 绝对值
Math.abs(-10); // 10
// 最大值/最小值
Math.max(1, 2, 3); // 3
Math.min(1, 2, 3); // 1
// 随机数
Math.random(); // [0, 1) 随机数
Math.floor(Math.random() * 10); // 0-9 随机整数
// 幂运算
Math.pow(2, 3); // 8(2 的 3 次方)
Math.sqrt(16); // 4(平方根)
// 判断
Number.isInteger(10); // true
Number.isNaN(NaN); // true
Number.isFinite(10); // true
// toFixed
num.toFixed(2); // "3.14"十、注释
javascript
// 单行注释
/**
* 多行注释
* 可以写多行
*/
// TODO: 待办事项
// FIXME: 需要修复
// NOTE: 注意事项总结
JavaScript 基础语法包括变量、数据类型、运算符、条件语句、循环语句等。掌握这些基础知识是深入学习 JavaScript 的前提。