简介
《Up & Going》是 YDKJS 系列的入门书,适合 JavaScript 新手或想巩固基础的开发者。
核心知识点
1. 变量与类型
JavaScript 有以下基本类型:
// 基本类型 (Primitive)
typeof "hello" // "string"
typeof 42 // "number"
typeof true // "boolean"
typeof undefined // "undefined"
typeof null // "object" (历史遗留 bug)
typeof Symbol() // "symbol"
// 引用类型
typeof {} // "object"
typeof [] // "object"
typeof function() {} // "function"
重要概念:
- 基本类型按值传递,引用类型按引用传递
null的typeof返回"object"是 JS 的一个 bug
2. 值与引用
// 基本类型 - 赋值是值拷贝
let a = 2;
let b = a; // b 是 2 的副本
b = 3;
console.log(a); // 2,不变
// 引用类型 - 赋值是引用拷贝
let obj1 = { name: "Lily" };
let obj2 = obj1; // obj2 指向同一个对象
obj2.name = "Rose";
console.log(obj1.name); // "Rose",原对象也被修改
3. 运算符
// 相等性比较
"42" == 42 // true (宽松相等,类型转换)
"42" === 42 // false (严格相等,不类型转换)
// 建议:始终使用 === 严格相等
// 三元运算符
let status = age >= 18 ? "adult" : "minor";
// 逻辑运算符
let result = a && b; // a 为真则返回 b,否则返回 a
let result = a || b; // a 为真则返回 a,否则返回 b
4. 流程控制
// if else
if (condition) {
// ...
} else if (condition2) {
// ...
} else {
// ...
}
// switch
switch (value) {
case 1:
// ...
break;
case 2:
// ...
break;
default:
// ...
}
// 三元运算符适合简单判断
let type = score >= 60 ? "pass" : "fail";
5. 循环
// for 循环
for (let i = 0; i < 5; i++) {
console.log(i);
}
// for...of (遍历数组/可迭代对象)
for (let item of items) {
console.log(item);
}
// for...in (遍历对象属性)
for (let key in obj) {
console.log(key, obj[key]);
}
// while 循环
while (condition) {
// ...
}
6. 函数
// 函数声明
function greet(name) {
return "Hello, " + name;
}
// 函数表达式
const greet = function(name) {
return "Hello, " + name;
};
// 箭头函数
const greet = (name) => "Hello, " + name;
const add = (a, b) => a + b;
// 默认参数
function greet(name = "World") {
return "Hello, " + name;
}
作用域
什么是作用域?
作用域决定了变量的可见性和生命周期。
function outer() {
let outerVar = "外层";
function inner() {
let innerVar = "内层";
console.log(outerVar); // 可以访问外层
}
inner();
// console.log(innerVar); // 错误!无法访问内层变量
}
块级作用域
// let 块级作用域
if (true) {
let blockVar = "块内";
}
// console.log(blockVar); // ReferenceError
// var 函数作用域
if (true) {
var functionVar = "函数级别";
}
console.log(functionVar); // "函数级别" - var 没有块级作用域
小结
- ✅ 理解基本类型和引用类型的区别
- ✅ 始终使用
===严格相等 - ✅ 优先使用
let和const,避免使用var - ✅ 掌握函数和箭头函数的用法
相关阅读: