初识javascript

1. JavaScript 基础语法

(1) 变量声明

JavaScript支持三种声明变量的方式:

  • var:传统的变量声明方式,存在作用域问题(函数作用域)。

  • let:块级作用域变量声明方式,避免了var的作用域问题。

  • const:常量声明,声明后不能修改其值,具备块级作用域。

var name = "John";  // 使用 var 声明
let age = 25;       // 使用 let 声明
const isStudent = true;  // 使用 const 声明
(2) 数据类型

JavaScript有6种基本数据类型:

  • Primitive Typesstringnumberbooleanundefinednullsymbol(ES6新增)

  • Reference TypesObjectArrayFunctionDate

let name = "John";  // string
let age = 25;       // number
let isStudent = true;  // boolean
let person = { name: "John", age: 25 };  // object
let numbers = [1, 2, 3];  // array
(3) 类型转换

JavaScript会进行隐式或显式的类型转换。

  • 隐式转换:例如 "" + 1 会返回 "1",即数字1被转换成字符串。

  • 显式转换:使用 String()Number()Boolean() 等函数进行类型转换。

let num = 5;
let str = String(num);  // 转换为字符串 "5"
let bool = Boolean(num); // 转换为布尔值 true

2. 控制流

(1) 条件语句

JavaScript支持常见的条件语句:

  • ifelseelse if

  • switch:用于多个条件判断时更简洁。

let age = 18;
if (age >= 18) {
    console.log("Adult");
} else {
    console.log("Minor");
}

let color = "red";
switch(color) {
    case "red":
        console.log("Red color");
        break;
    case "blue":
        console.log("Blue color");
        break;
    default:
        console.log("Unknown color");
}
(2) 循环语句

JavaScript提供几种循环方式来处理重复执行的任务:

  • for:用于知道循环次数时。

  • while:在循环条件满足时继续执行。

  • do...while:至少执行一次循环体。

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

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

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

3. 函数

(1) 函数声明

JavaScript中的函数声明语法如下:

function greet(name) {
    return "Hello, " + name;
}
console.log(greet("John"));  // 输出 "Hello, John"
(2) 匿名函数

可以创建没有名称的函数,通常与变量一起使用,或者作为回调传递:

let add = function(a, b) {
    return a + b;
};
console.log(add(5, 10));  // 输出 15
(3) 箭头函数 (Arrow Functions)

ES6新增的语法,使得函数写法更加简洁,同时保留了外部this的上下文。

const multiply = (a, b) => a * b;
console.log(multiply(3, 4));  // 输出 12
(4) 高阶函数

函数可以作为参数传递给另一个函数,或者作为返回值返回。JavaScript中的许多内建函数如map()filter()reduce()等都属于高阶函数。

let numbers = [1, 2, 3, 4];
let doubled = numbers.map(x => x * 2);  // 高阶函数的例子
console.log(doubled);  // 输出 [2, 4, 6, 8]

4. 对象和数组

(1) 对象 (Object)

对象是JavaScript中最常用的数据结构之一,用于存储键值对。

let person = {
    name: "John",
    age: 30,
    greet: function() {
        return "Hello " + this.name;
    }
};
console.log(person.name);  // 输出 "John"
console.log(person.greet());  // 输出 "Hello John"
(2) 数组 (Array)

数组是一个有序的元素集合,可以是任意类型的数据。

let fruits = ["apple", "banana", "cherry"];
console.log(fruits[0]);  // 输出 "apple"
fruits.push("orange");   // 向数组添加元素
console.log(fruits);  // 输出 ["apple", "banana", "cherry", "orange"]

5. 事件处理

JavaScript允许开发者监听和处理用户的交互事件(如点击、键盘输入、鼠标移动等)。

<button id="clickBtn">Click Me</button>
<script>
document.getElementById("clickBtn").addEventListener("click", function() {
    alert("Button clicked!");
});
</script>
  • addEventListener() 用于绑定事件处理器。

  • removeEventListener() 用于移除事件处理器。

6. 异步编程

JavaScript是单线程的,这意味着它一次只能做一件事。不过,可以通过异步编程实现并发行为。

(1) 回调函数

回调函数是异步操作完成时调用的函数。

function fetchData(callback) {
    setTimeout(() => {
        console.log("Data fetched");
        callback();
    }, 1000);
}

fetchData(() => {
    console.log("Callback executed");
});
(2) Promise

Promise 是JavaScript中用于处理异步操作的标准化方式。

let promise = new Promise((resolve, reject) => {
    let success = true;
    if (success) {
        resolve("Success!");
    } else {
        reject("Failed!");
    }
});

promise.then(result => {
    console.log(result);  // 输出 "Success!"
}).catch(error => {
    console.log(error);   // 输出 "Failed!"
});
(3) async/await

async/await 是基于 Promise 的语法糖,它让异步代码看起来像同步代码。

async function fetchData() {
    let result = await new Promise((resolve, reject) => {
        setTimeout(() => resolve("Data fetched"), 1000);
    });
    console.log(result);  // 输出 "Data fetched"
}

fetchData();

7. DOM操作

JavaScript可以通过DOM(文档对象模型)操作HTML文档内容、结构和样式。

(1) 选择元素
let element = document.getElementById("myElement");  // 通过ID选择
let elements = document.getElementsByClassName("myClass");  // 通过类名选择
let allDivs = document.querySelectorAll("div");  // 通过CSS选择器选择
(2) 修改元素
element.innerHTML = "New Content";  // 修改内容
element.style.color = "blue";  // 修改样式
(3) 创建元素
let newDiv = document.createElement("div");
newDiv.textContent = "This is a new div!";
document.body.appendChild(newDiv);  // 将新元素添加到页面

8. ES6新特性

(1) 解构赋值
let person = { name: "John", age: 30 };
let { name, age } = person;  // 解构赋值
console.log(name);  // 输出 "John"
console.log(age);   // 输出 30
(2) 模块化

ES6支持模块化,可以使用exportimport来导出和导入模块。

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

// main.js
import { add } from './math.js';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值