当前位置: 首页 > news >正文

javascript知识点

基础语法

变量声明
  • var:在 ES6 之前用于声明变量,具有函数作用域。例如:
function example() {
    var x = 10;
    if (true) {
        var x = 20; // 这里的 x 会覆盖外部的 x
    }
    console.log(x); // 输出 20
}
example();
  • let:ES6 引入,具有块级作用域。例如:
function example() {
    let x = 10;
    if (true) {
        let x = 20; // 这里的 x 只在 if 块内有效
    }
    console.log(x); // 输出 10
}
example();
  • const:同样是 ES6 引入,用于声明常量,一旦赋值就不能再重新赋值,也具有块级作用域。例如:
const PI = 3.14;
// PI = 3.1415; // 这会报错
数据类型
  • 基本数据类型:包括 NumberStringBooleanNullUndefinedSymbol(ES6 新增)。例如:
let num = 10;
let str = "Hello";
let bool = true;
let n = null;
let und;
let sym = Symbol('unique');
  • 引用数据类型:主要是 Object,数组(Array)、函数(Function)等都属于对象的特殊形式。例如:
let obj = { name: "John", age: 30 };
let arr = [1, 2, 3];
function func() {
    console.log('Hello');
}
函数
  • 函数声明
function add(a, b) {
    return a + b;
}
  • 函数表达式
const multiply = function(a, b) {
    return a * b;
};
  • 箭头函数:ES6 引入的简洁语法,没有自己的 thisarguments 等。例如:
const divide = (a, b) => a / b;

控制流

条件语句
  • if…else
let num = 10;
if (num > 5) {
    console.log('Greater than 5');
} else {
    console.log('Less than or equal to 5');
}
  • switch
let day = 3;
switch (day) {
    case 1:
        console.log('Monday');
        break;
    case 2:
        console.log('Tuesday');
        break;
    default:
        console.log('Other day');
}
循环语句
  • for 循环
for (let i = 0; i < 5; i++) {
    console.log(i);
}
  • while 循环
let i = 0;
while (i < 5) {
    console.log(i);
    i++;
}
  • do…while 循环
let j = 0;
do {
    console.log(j);
    j++;
} while (j < 5);

面向对象编程

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

let person = new Person('John', 30);
person.sayHello();
原型链

JavaScript 通过原型链实现继承。每个对象都有一个原型对象,通过 __proto__ 访问。例如:

Person.prototype.greet = function() {
    console.log(`Hi, I'm ${this.name}`);
};
person.greet();
类(ES6)
class Animal {
    constructor(name) {
        this.name = name;
    }
    speak() {
        console.log(`${this.name} makes a noise.`);
    }
}

class Dog extends Animal {
    speak() {
        console.log(`${this.name} barks.`);
    }
}

let dog = new Dog('Buddy');
dog.speak();

异步编程

回调函数
function fetchData(callback) {
    setTimeout(() => {
        let data = 'Some data';
        callback(data);
    }, 1000);
}

fetchData((data) => {
    console.log(data);
});
Promise
function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            let data = 'Some data';
            resolve(data);
            // reject(new Error('Something went wrong'));
        }, 1000);
    });
}

fetchData()
  .then((data) => {
        console.log(data);
    })
  .catch((error) => {
        console.error(error);
    });
async/await
async function getData() {
    try {
        let data = await fetchData();
        console.log(data);
    } catch (error) {
        console.error(error);
    }
}

getData();

DOM 操作

选择元素
// 通过 ID 选择元素
let elementById = document.getElementById('myId');
// 通过类名选择元素
let elementsByClass = document.getElementsByClassName('myClass');
// 通过标签名选择元素
let elementsByTag = document.getElementsByTagName('p');
// 使用 querySelector
let firstParagraph = document.querySelector('p');
修改元素内容
let element = document.getElementById('myElement');
element.innerHTML = 'New content';
事件处理
let button = document.getElementById('myButton');
button.addEventListener('click', function() {
    console.log('Button clicked');
});

总结

JavaScript 是一种功能强大的编程语言,广泛应用于前端开发、后端开发(Node.js)等领域。它具有动态类型、灵活的语法和丰富的特性,如异步编程、面向对象编程等。掌握 JavaScript 的基础语法、控制流、函数、面向对象编程、异步编程和 DOM 操作等知识点,对于开发高质量的 Web 应用程序至关重要。同时,随着 ES6 及后续版本的不断发展,JavaScript 不断引入新的特性和语法糖,使得代码更加简洁和易于维护。

相关文章:

  • rip 协议详细介绍
  • LeetCode[19] 删除链表的倒数第 N 个结点
  • 跨境电商IP安全生死线,住宅代理与浏览器指纹攻防实录
  • redis缓存更新策略
  • 【ArduPilot】Windows下使用Optitrack通过MAVProxy连接无人机实现定位与导航
  • 优先队列 priority_queue详解
  • 成都国际数字影像产业园如何打造文创运营新模式​?
  • 【论文阅读】MMedPO: 用临床感知多模态偏好优化调整医学视觉语言模型
  • stride网络安全威胁 网络安全威胁是什么
  • HarmonyOs- UIAbility应用上下文
  • 产品战略之科学定价策略与模型(104页PPT)(文末有下载方式)
  • protobuf的学习
  • 算法刷题记录——LeetCode篇(6) [第501~600题](持续更新)
  • 聊聊langchain4j的Tools(Function Calling)
  • mybatis集合映射association与collection
  • 常用的遍历方法用途和运用
  • QT学习笔记1
  • 【在数轴上找最优位置,使移动距离最短】
  • 【区块链 + 商贸零售】商小萌小程序 | FISCO BCOS 应用案例
  • uniapp路由跳转导致页面堆积问题
  • 新片|《碟中谍8:最终清算》定档5月30日
  • 马上评|“衣服越来越难买”,对市场是一个提醒
  • 颜福庆与顾临的争论:1930年代在中国维持一家医学院要花多少钱
  • 京东CEO许冉:外卖日单量接近2000万单,看到外卖对平台拉动和转化效应
  • 日本广岛大学一处拆迁工地发现疑似未爆弹
  • 梅花奖在上海|“我的乱弹我的团”,民营院团首次入围终评