Skip to content

基础语法

JavaScript 基础语法包括变量、数据类型、运算符和控制流程。

变量声明

var(旧方式)

javascript
var name = '张三';
var age = 25;

特点:

  • 函数作用域
  • 变量提升
  • 可以重复声明

let(推荐)

javascript
let name = '张三';
name = '李四'; // 可以修改

特点:

  • 块级作用域
  • 不存在变量提升
  • 不能重复声明

const(常量)

javascript
const PI = 3.14159;
// PI = 3.14; // 错误,不能修改

特点:

  • 块级作用域
  • 声明时必须初始化
  • 不能重新赋值
  • 对象属性可以修改
javascript
const person = { name: '张三' };
person.name = '李四'; // 可以
// person = {}; // 错误

数据类型

原始类型

javascript
// 数字(Number)
let num = 42;
let price = 3.14;
let negative = -10;

// 字符串(String)
let str1 = 'Hello';
let str2 = "World";
let str3 = `模板字符串 ${str1}`; // 模板字符串

// 布尔值(Boolean)
let isTrue = true;
let isFalse = false;

// 空值(Null)
let empty = null;

// 未定义(Undefined)
let notDefined;
console.log(notDefined); // undefined

// 符号(Symbol)- ES6
let sym = Symbol('description');

// 大整数(BigInt)- ES2020
let bigNum = 9007199254740991n;

引用类型

javascript
// 对象(Object)
let person = {
    name: '张三',
    age: 25
};

// 数组(Array)
let arr = [1, 2, 3, 4, 5];

// 函数(Function)
function greet() {
    console.log('Hello!');
}

类型检测

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([] instanceof Array);  // true
console.log({} instanceof Object); // true

// Array.isArray()
console.log(Array.isArray([1, 2, 3])); // true

类型转换

javascript
// 转字符串
String(123);       // "123"
(123).toString();  // "123"
123 + '';          // "123"

// 转数字
Number('123');     // 123
parseInt('123');   // 123
parseFloat('3.14');// 3.14
+'123';            // 123

// 转布尔值
Boolean(1);        // true
Boolean(0);        // false
Boolean('');       // false
Boolean('hello');  // true
!!1;               // true

运算符

算术运算符

javascript
let a = 10, b = 3;

console.log(a + b);  // 13 加
console.log(a - b);  // 7  减
console.log(a * b);  // 30 乘
console.log(a / b);  // 3.333... 除
console.log(a % b);  // 1  取余
console.log(a ** b); // 1000 幂运算

// 自增/自减
let x = 5;
console.log(x++);  // 5(先返回后加)
console.log(x);    // 6
console.log(++x);  // 7(先加后返回)

赋值运算符

javascript
let x = 10;
x += 5;   // x = x + 5  -> 15
x -= 3;   // x = x - 3  -> 12
x *= 2;   // x = x * 2  -> 24
x /= 4;   // x = x / 4  -> 6
x %= 4;   // x = x % 4  -> 2

比较运算符

javascript
// 相等比较
console.log(5 == '5');   // true(类型转换后比较)
console.log(5 === '5');  // false(严格相等,不转换类型)
console.log(5 != '5');   // false
console.log(5 !== '5');  // true

// 大小比较
console.log(10 > 5);   // true
console.log(10 >= 10); // true
console.log(5 < 10);   // true
console.log(5 <= 5);   // true

最佳实践

推荐使用 ===!== 进行比较,避免类型转换带来的意外结果。

逻辑运算符

javascript
// 与(AND)
console.log(true && true);   // true
console.log(true && false);  // false

// 或(OR)
console.log(false || true);  // true
console.log(false || false); // false

// 非(NOT)
console.log(!true);  // false
console.log(!false); // true

// 短路求值
let a = 0;
let b = a || 'default';  // 'default'
let c = a && 'default';  // 0

三元运算符

javascript
let age = 18;
let status = age >= 18 ? '成年' : '未成年';
console.log(status); // '成年'

字符串运算符

javascript
let str1 = 'Hello';
let str2 = 'World';
console.log(str1 + ' ' + str2); // 'Hello World'

控制流程

条件语句

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('不及格');
}

switch

javascript
let day = 3;

switch (day) {
    case 1:
        console.log('星期一');
        break;
    case 2:
        console.log('星期二');
        break;
    case 3:
        console.log('星期三');
        break;
    default:
        console.log('其他');
}

循环语句

for

javascript
for (let i = 0; i < 5; i++) {
    console.log(i);
}
// 输出: 0, 1, 2, 3, 4

while

javascript
let i = 0;
while (i < 5) {
    console.log(i);
    i++;
}

do...while

javascript
let i = 0;
do {
    console.log(i);
    i++;
} while (i < 5);

for...in

遍历对象属性:

javascript
let person = { name: '张三', age: 25 };
for (let key in person) {
    console.log(key + ': ' + person[key]);
}
// name: 张三
// age: 25

for...of

遍历可迭代对象:

javascript
let arr = [1, 2, 3, 4, 5];
for (let value of arr) {
    console.log(value);
}
// 1, 2, 3, 4, 5

break 和 continue

javascript
// break - 跳出循环
for (let i = 0; i < 10; i++) {
    if (i === 5) break;
    console.log(i);
}
// 输出: 0, 1, 2, 3, 4

// continue - 跳过当前迭代
for (let i = 0; i < 10; i++) {
    if (i % 2 === 0) continue;
    console.log(i);
}
// 输出: 1, 3, 5, 7, 9

实践示例

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>JavaScript 基础语法示例</title>
</head>
<body>
    <h1>JavaScript 基础语法示例</h1>
    <script>
        // 变量声明
        const appName = '我的应用';
        let userCount = 100;
        let isLoggedIn = false;
        
        // 数据类型
        let price = 99.9;
        let productName = '商品名称';
        let tags = ['电子', '数码', '科技'];
        let product = {
            id: 1,
            name: '手机',
            price: 2999
        };
        
        // 条件判断
        function getDiscount(userLevel) {
            let discount;
            switch (userLevel) {
                case 'vip':
                    discount = 0.8;
                    break;
                case 'svip':
                    discount = 0.7;
                    break;
                default:
                    discount = 1;
            }
            return discount;
        }
        
        // 循环
        function printNumbers(max) {
            let numbers = [];
            for (let i = 1; i <= max; i++) {
                numbers.push(i);
            }
            return numbers;
        }
        
        // 输出结果
        console.log('应用名称:', appName);
        console.log('用户数量:', userCount);
        console.log('VIP折扣:', getDiscount('vip'));
        console.log('数字列表:', printNumbers(10));
        
        // 遍历对象
        console.log('商品信息:');
        for (let key in product) {
            console.log(`  ${key}: ${product[key]}`);
        }
        
        // 遍历数组
        console.log('商品标签:');
        for (let tag of tags) {
            console.log(`  - ${tag}`);
        }
    </script>
</body>
</html>