30分钟入门javascript(大学生版)


30分钟入门JavaScript

1. JavaScript简介

JavaScript(简称JS)是一种高级、解释型的编程语言。最初由网景公司开发,用于网页的交互式操作。如今,JavaScript已成为了几乎所有现代网站不可或缺的一部分,并且被广泛应用于服务器端(Node.js)、桌面应用、移动应用等多个领域。

2. 基本语法

2.1 变量声明

在JavaScript中,可以使用varletconst来声明变量。

var message = "Hello, world!";
let score = 100;
const PI = 3.14159;
  • var是ES5及之前版本中使用的方式,具有函数作用域或全局作用域。
  • letconst是ES6引入的,具有块级作用域。
2.2 数据类型

JavaScript是一种弱类型语言,支持多种数据类型,包括:

  • 数字(Number)
  • 字符串(String)
  • 布尔值(Boolean)
  • 空值(null)
  • 未定义(undefined)
  • 对象(Object)
  • 数组(Array)
  • 函数(Function)
2.3 基本运算符

JavaScript提供了丰富的运算符,包括算术运算符、比较运算符、逻辑运算符等。

let a = 10;
let b = 5;
let sum = a + b; // 15
let difference = a - b; // 5
let product = a * b; // 50
let quotient = a / b; // 2
let modulus = a % b; // 0

3. 控制结构

3.1 条件语句

使用ifelse ifelse来控制条件执行。

let age = 18;
if (age >= 18) {
    console.log("You are an adult.");
} else {
    console.log("You are not an adult.");
}
3.2 循环

JavaScript提供了forwhiledo...while循环。

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

let count = 0;
while (count < 3) {
    console.log(count);
    count++;
}

do {
    console.log("Hello");
} while (false);

4. 函数

函数是一段可以重复使用的代码块。在JavaScript中,可以使用函数表达式或函数声明来定义函数。

function sayHello(name) {
    console.log("Hello, " + name);
}

sayHello("Alice"); // Hello, Alice

let greet = function (name) {
    console.log("Hi, " + name);
};

greet("Bob"); // Hi, Bob

5. 对象和数组

5.1 对象

对象是键值对的集合,键是字符串,值可以是任何类型。

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

person.greet(); // Hello, John
5.2 数组

数组用于存储有序的数据集合。

let fruits = ["Apple", "Banana", "Cherry"];
console.log(fruits[0]); // Apple
console.log(fruits.length); // 3

fruits.push("Date");
console.log(fruits); // ["Apple", "Banana", "Cherry", "Date"]

6. 事件和DOM操作

JavaScript可以与HTML文档交互,操作DOM(文档对象模型)。

<button id="myButton">Click me</button>
<script>
    document.getElementById("myButton").addEventListener("click", function() {
        alert("Button clicked!");
    });
</script>

这段代码会在按钮被点击时显示一个警告框。

7. 异步编程

JavaScript支持异步编程,可以使用回调函数、Promise和async/await来处理异步操作。

function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve("Data fetched");
        }, 1000);
    });
}

fetchData().then(data => {
    console.log(data); // Data fetched
});

更多!!!

变量和数据类型

变量声明
  • var:函数作用域或全局作用域。
  • let:块级作用域,不允许重复声明。
  • const:块级作用域,用于声明常量,一旦赋值不能修改。
数据类型
  • 数字(Number)
  • 字符串(String)
  • 布尔值(Boolean)
  • 空值(null)
  • 未定义(undefined)
  • 对象(Object)
  • 数组(Array)
  • 函数(Function)

基本运算符

  • 算术运算符:+, -, *, /, %
  • 赋值运算符:=, +=, -=, *=, /=, %=
  • 比较运算符:==, ===, !=, !==
  • 逻辑运算符:&&, ||, !

第2部分:控制结构

条件语句

  • if...else:基本的条件执行。
  • switch:多条件分支选择。

循环

  • for:适合已知次数的循环。
  • while:适合未知次数的循环。
  • do...while:至少执行一次的循环。

第3部分:函数

函数定义

函数是执行特定任务的代码块,可以带有参数和返回值。

function welcome(message) {
    console.log(message);
}

welcome("Welcome to JavaScript!");
箭头函数

ES6引入的箭头函数提供了一种更简洁的函数写法。

const sayHello = (name) => {
    console.log(`Hello, ${name}!`);
};

sayHello("Alice");

第4部分:对象和数组

对象

对象是属性的集合,属性可以是基本数据类型或函数(方法)。

let user = {
    name: "Bob",
    age: 25,
    greet: function() {
        console.log(`Hello, my name is ${this.name}`);
    }
};

user.greet(); // Hello, my name is Bob

数组

数组是有序的数据集合,可以包含任何类型的元素。

let numbers = [1, 2, 3, 4, 5];
console.log(numbers[0]); // 1
console.log(numbers.length); // 5

numbers.push(6);
console.log(numbers); // [1, 2, 3, 4, 5, 6]

第5部分:事件和DOM操作

JavaScript可以通过事件监听器响应用户行为,如点击、输入等。

<button id="clickMe">Click Me</button>
<script>
    document.getElementById("clickMe").addEventListener("click", function() {
        alert("Button was clicked!");
    });
</script>

DOM操作

通过JavaScript,可以动态地修改页面内容、样式和结构。

let heading = document.createElement("h1");
heading.textContent = "Hello, World!";
document.body.appendChild(heading);

第6部分:异步编程

JavaScript的异步编程模型使得可以不阻塞主线程地执行长时间运行的任务。

Promise

Promise是对异步操作最终完成或失败的抽象。

function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve("Data received");
        }, 1000);
    });
}

fetchData().then(data => {
    console.log(data); // Data received
});

Async/Await

asyncawait使得异步代码的写法更接近同步代码。

async function fetchDataAsync() {
    try {
        let data = await fetchData();
        console.log(data);
    } catch (error) {
        console.error("Error fetching data", error);
    }
}

fetchDataAsync();

当然,我们可以继续深入探讨JavaScript的一些高级特性和实用技巧,以帮助初学者更全面地了解这门语言。

第7部分:高级数据类型和模式

Map和Set

MapSet是ES6中新增的集合类型。

  • Map保存键值对,而且键可以是任何类型。
  • Set保存唯一的值,无论是什么类型。
let map = new Map();
map.set("key", "value");
console.log(map.get("key")); // "value"

let set = new Set();
set.add(1).add("unique").add({}));
console.log(set.size); // 3

WeakMap和WeakSet

WeakMapWeakSet也是ES6中新增的集合类型,它们存储对对象的弱引用。

  • WeakMap只能通过对象作为键。
  • WeakSet只能存储对象。

它们适合用于缓存或内存管理,因为它们的对象键可以被垃圾回收。

第8部分:原型和继承

JavaScript是一种基于原型的语言,每个对象都有一个原型。

  • 原型链:对象属性和方法的继承链。
  • Object.create():创建一个新对象,使用现有的对象来提供新对象的__proto__
let animal = {
    speak() {
        console.log("Animal speaks");
    }
};

let dog = Object.create(animal);
dog.speak(); // Animal speaks

类(ES6+)

虽然JavaScript没有传统意义上的类,但ES6引入了类语法糖,使得基于原型的继承更加清晰。

class Animal {
    constructor(name) {
        this.name = name;
    }

    speak() {
        return this.name + " makes a noise";
    }
}

class Dog extends Animal {
    speak() {
        return super.speak().replace("makes a noise", "barks");
    }
}

let myDog = new Dog("Buddy");
console.log(myDog.speak()); // Buddy barks

第9部分:模块

ES6模块允许我们将代码组织成可重用的单元。

// mathFunctions.js
export function add(x, y) {
    return x + y;
}

// app.js
import { add } from './mathFunctions.js';
console.log(add(1, 2)); // 3

第10部分:错误处理

JavaScript提供了try...catch语句来处理可能发生的错误。

try {
    let result = null;
    result.doSomething(); // 这将抛出一个错误
} catch (error) {
    console.error("An error occurred:", error);
}

第11部分:JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。

let user = { name: "Alice", age: 25 };
let jsonText = JSON.stringify(user);
console.log(jsonText); // '{"name":"Alice","age":25}'

let parsedUser = JSON.parse(jsonText);
console.log(parsedUser.name); // Alice

第12部分:性能优化

  • 避免长时间运行的循环和复杂的计算。
  • 使用Web Workers进行后台线程计算。
  • 利用浏览器的缓存机制。
  • 减少DOM操作和重绘/重排。

第13部分:现代开发工具

  • 使用构建工具,如Webpack、Rollup或Parcel。
  • 利用ESLint等代码质量工具。
  • 使用Babel转换ES6+代码到ES5,以兼容老旧浏览器。
  • 利用Source Maps进行代码调试。

结语

JavaScript是一个不断发展的语言,拥有庞大的生态系统和社区。通过本篇文章,你已经掌握了JavaScript的基础和一些高级特性。继续深入学习,实践项目,参与社区,你将成为一名出色的JavaScript开发者。

进一步学习资源


  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值