1. 首页 > IT综合教程 > 正文

it教程FG121-JavaScript基础

内容大纲

1. JavaScript简介

JavaScript是一种高级编程语言,主要用于网页交互和前端开发。它是Web开发的三大核心技术之一(HTML、CSS、JavaScript)。JavaScript可以在浏览器中运行,也可以在服务器端通过Node.js运行。

JavaScript的主要特点包括:

  • 脚本语言:不需要编译,直接由浏览器解释执行
  • 面向对象:支持面向对象编程
  • 动态类型:变量类型在运行时确定
  • 事件驱动:可以响应用户交互事件
  • 跨平台:可以在不同浏览器和环境中运行

学习交流加群风哥QQ113257174

2. JavaScript基本语法

2.1 变量声明

// 使用var声明变量(ES5及之前)
var name = "John";

// 使用let声明变量(ES6+)
let age = 30;

// 使用const声明常量(ES6+)
const PI = 3.14159;

2.2 数据类型

// 基本数据类型
let str = "Hello";
// 字符串
let num = 123;
// 数字
let bool = true;
// 布尔值
let n = null;
// 空值
let undef = undefined;
// 未定义
let sym = Symbol("id");
// 符号(ES6+)

// 引用数据类型
let obj = { name: "John", age: 30 };
// 对象
let arr = [1, 2, 3, 4, 5];
// 数组
let func = function() { console.log("Hello"); };
// 函数

2.3 运算符

// 算术运算符
let a = 10, b = 5;
console.log(a + b);
// 15
console.log(a - b);
// 5
console.log(a * b);
// 50
console.log(a / b);
// 2
console.log(a % b);
// 0
console.log(a ** b);
// 100000(ES6+)

// 比较运算符
console.log(a > b);
// true
console.log(a < b);
// false
console.log(a >= b);
// true
console.log(a <= b);
// false
console.log(a == b);
// false(类型转换)
console.log(a === b);
// false(严格比较)
console.log(a != b);
// true(类型转换)
console.log(a !== b);
// true(严格比较)

// 逻辑运算符
console.log(true && false);
// false
console.log(true || false);
// true
console.log(!true);
// false

3. JavaScript数据类型

3.1 字符串

let str = "Hello, World!";
console.log(str.length);
// 13
console.log(str.charAt(0));
// "H"
console.log(str.substring(0, 5));
// "Hello"
console.log(str.split(", "));
// ["Hello", "World!"]
console.log(str.toLowerCase());
// "hello, world!"
console.log(str.toUpperCase());
// "HELLO, WORLD!"
console.log(str.includes("World"));
// true

3.2 数字

let num = 123.45;
console.log(Math.round(num));
// 123
console.log(Math.floor(num));
// 123
console.log(Math.ceil(num));
// 124
console.log(Math.abs(-num));
// 123.45
console.log(Math.sqrt(16));
// 4
console.log(Math.pow(2, 3));
// 8
console.log(Math.random());
// 0-1之间的随机数

3.3 数组

let arr = [1, 2, 3, 4, 5];
console.log(arr.length);
// 5
console.log(arr.push(6));
// 6(新长度)
console.log(arr.pop());
// 6(移除的元素)
console.log(arr.shift());
// 1(移除的元素)
console.log(arr.unshift(0));
// 5(新长度)
console.log(arr.slice(1, 3));
// [2, 3]
console.log(arr.splice(1, 1, 10));
// [2](移除的元素)
console.log(arr);
// [0, 10, 3, 4]
console.log(arr.join(", "));
// "0, 10, 3, 4"
console.log(arr.sort());
// [0, 3, 4, 10]
console.log(arr.reverse());
// [10, 4, 3, 0]

3.4 对象

let person = {
    name: "John",
    age: 30,
    greet: function() {
        console.log(`Hello, my name is ${this.name}`);
    }
};

console.log(person.name);
// "John"
console.log(person["age"]);
// 30
person.greet();
// "Hello, my name is John"

// 添加新属性
person.email = "john@fgedu.net.cn";

// 删除属性
delete person.age;

// 遍历对象属性
for (let key in person) {
    console.log(`${key}: ${person[key]}`);
}

4. JavaScript控制流程

4.1 条件语句

// if语句
let age = 18;
if (age >= 18) {
    console.log("成年人");
} else if (age >= 13) {
    console.log("青少年");
} else {
    console.log("儿童");
}

// switch语句
let day = 1;
switch (day) {
    case 1:
        console.log("星期一");
        break;
    case 2:
        console.log("星期二");
        break;
    default:
        console.log("其他");
}

4.2 循环语句

// for循环
for (let i = 0; i < 5; i++) {
    console.log(i);
}

// for...in循环
let person = { name: "John", age: 30 };
for (let key in person) {
    console.log(`${key}: ${person[key]}`);
}

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

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

// do...while循环
let j = 0;
do {
    console.log(j);
    j++;
} while (j < 5);

5. JavaScript函数

5.1 函数声明

// 函数声明
function add(a, b) {
    return a + b;
}

console.log(add(1, 2));
// 3

// 函数表达式
let multiply = function(a, b) {
    return a * b;
};

console.log(multiply(2, 3));
// 6

// 箭头函数(ES6+)
let divide = (a, b) => a / b;

console.log(divide(6, 2));
// 3

5.2 函数参数

// 默认参数(ES6+)
function greet(name = "World") {
    console.log(`Hello, ${name}!`);
}

greet();
// "Hello, World!"
greet("John");
// "Hello, John!"

// 剩余参数(ES6+)
function sum(...numbers) {
    return numbers.reduce((total, num) => total + num, 0);
}

console.log(sum(1, 2, 3, 4, 5));
// 15

5.3 函数作用域

// 全局作用域
let globalVar = "global";

function test() {
    // 函数作用域
    let localVar = "local";
    console.log(globalVar);
    // "global"
    console.log(localVar);
    // "local"
}

test();
console.log(globalVar);
// "global"
// console.log(localVar); // 错误:localVar is not defined

// 块级作用域(ES6+)
if (true) {
    let blockVar = "block";
    console.log(blockVar);
    // "block"
}
// console.log(blockVar); // 错误:blockVar is not defined

6. JavaScript对象

6.1 对象创建

// 对象字面量
let person = {
    name: "John",
    age: 30,
    greet: function() {
        console.log(`Hello, my name is ${this.name}`);
    }
};

// 构造函数
function Person(name, age) {
    this.name = name;
    this.age = age;
    this.greet = function() {
        console.log(`Hello, my name is ${this.name}`);
    };
}

let person1 = new Person("John", 30);
let person2 = new Person("Jane", 25);

// Object.create()
let personProto = {}
greet: function() {
    console.log(`Hello, my name is ${this.name}`);
};

let person3 = Object.create(personProto);
person3.name = "John";
person3.age = 30;

6.2 原型和继承

// 原型
function Person(name, age) {
    this.name = name;
    this.age = age;
}

// 在原型上添加方法
Person.prototype.greet = function() {
    console.log(`Hello, my name is ${this.name}`);
};

let person = new Person("John", 30);
person.greet();
// "Hello, my name is John"

// 继承
function Student(name, age, grade) {
    Person.call(this, name, age);
    this.grade = grade;
}

// 设置原型链
Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;

// 添加子类方法
Student.prototype.study = function() {
    console.log(`${this.name} is studying`);
};

let student = new Student("John", 15, 9);
student.greet();
// "Hello, my name is John"
student.study();
// "John is studying"

7. DOM操作

7.1 DOM选择

// 通过ID选择元素
let elementById = document.getElementById("id");

// 通过类名选择元素
let elementsByClass = document.getElementsByClassName("class");

// 通过标签名选择元素
let elementsByTag = document.getElementsByTagName("tag");

// 通过CSS选择器选择元素(ES5+)
let elementBySelector = document.querySelector("#id");
let elementsBySelector = document.querySelectorAll(".class");

7.2 DOM修改

// 修改内容
let element = document.getElementById("id");
element.textContent = "新内容";
element.innerHTML = "新内容";

// 修改属性
element.setAttribute("class", "new-class");
element.removeAttribute("class");

// 修改样式
element.style.color = "red";
element.style.fontSize = "16px";

// 添加/移除类
element.classList.add("class");
element.classList.remove("class");
element.classList.toggle("class");

// 创建和添加元素
let newElement = document.createElement("div");
newElement.textContent = "新元素";
document.body.appendChild(newElement);

// 移除元素
element.remove();

// 事件监听
element.addEventListener("click", function() {
    console.log("元素被点击");
});

8. JavaScript最佳实践

生产环境建议

  • 使用ES6+语法,如let/const、箭头函数、模板字符串等
  • 避免使用var,减少作用域问题
  • 使用严格模式('use strict')避免常见错误
  • 使用模块化(ES模块或CommonJS)组织代码
  • 使用Promise或async/await处理异步操作
  • 使用try/catch处理错误
  • 避免全局变量,使用闭包或模块化封装
  • 优化DOM操作,减少重排和重绘
  • 使用工具库(如Lodash)简化操作
  • 使用代码压缩和混淆工具减小文件体积

风哥风哥提示:JavaScript是一门不断发展的语言,建议定期学习新特性和最佳实践。

更多学习教程www.fgedu.net.cn

学习交流加群风哥微信: itpux-com

更多学习教程公众号风哥教程itpux_com

author:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息