原生 JavaScript基本内容和常用特性详解

原生 JavaScript(也称为 Vanilla JS)指的是不依赖于任何框架或库的纯 JavaScript。以下是原生 JavaScript 的一些基本内容和常用特性详解。

目录

1. 数据类型

2. 变量声明

3. 控制结构

4. 函数

5. 对象和数组

6. 事件处理

7. DOM 操作

8. Promise 和异步编程

9. 模块化

10. JSON 操作


1. 数据类型

JavaScript 有七种基本数据类型:

  • 原始类型

    • Number:数字类型,例如 42 或 3.14
    • String:字符串类型,例如 'Hello' 或 "World"
    • Boolean:布尔类型,只有两个值:true 或 false
    • Undefined:未定义的类型,表示变量未被赋值。
    • Null:表示无值的类型,表示“空”。
    • Symbol:ES6 引入的独特且不可变的数据类型,通常用于对象属性的标识。
    • BigInt:用来表示大于 2^53 - 1 的整数。
  • 引用类型

    • Object:对象类型,是键值对的集合。
    • 数组(Array):特殊的对象,用于存储有序的数据集合。
    • 函数(Function):也是对象,可以被调用。

2. 变量声明

使用 varlet 和 const 声明变量。

  • var:函数作用域或全局作用域,允许重复声明。
  • let:块作用域,不允许重复声明。
  • const:块作用域,不允许重新赋值,必须在声明时初始化。
var a = 10;
let b = 20;
const c = 30;

3. 控制结构

JavaScript 提供了多种控制结构,如条件语句和循环语句。

  • 条件语句:
if (a > b) {console.log('a is greater than b');
} else if (a < b) {console.log('a is less than b');
} else {console.log('a is equal to b');
}
  • 循环语句:
// for 循环
for (let i = 0; i < 5; i++) {console.log(i);
}// while 循环
let i = 0;
while (i < 5) {console.log(i);i++;
}

4. 函数

JavaScript 中的函数也是一种对象,支持高阶函数(即可以接收函数作为参数的函数)。

  • 声明函数:
function add(x, y) {return x + y;
}// 箭头函数
const sum = (x, y) => x + y;

5. 对象和数组

  • 对象的创建:
let person = {name: 'Alice',age: 25,greet() {console.log(`Hello, my name is ${this.name}`);},
};person.greet(); // Hello, my name is Alice
  • 数组的创建和访问:
let fruits = ['apple', 'banana', 'cherry'];
console.log(fruits[0]); // apple
fruits.push('date'); // 添加元素

6. 事件处理

使用原生 JavaScript 可以为 DOM 元素添加事件监听器。

let button = document.getElementById('myButton');
button.addEventListener('click', function() {alert('Button clicked!');
});

7. DOM 操作

JavaScript 可以通过 document 对象操作 HTML 文档。

  • 获取元素:
let element = document.querySelector('.myClass');
  • 修改内容和样式:
element.textContent = 'New Content';
element.style.color = 'red';
  • 创建和添加元素:
let newDiv = document.createElement('div');
newDiv.textContent = 'Hello, World!';
document.body.appendChild(newDiv);

8. Promise 和异步编程

JavaScript 中的 Promise 用于处理异步操作。

let promise = new Promise((resolve, reject) => {setTimeout(() => {resolve('Success!');}, 2000);
});promise.then(result => {console.log(result); // Success!
});

9. 模块化

使用 ES6 语法可以将代码模块化。

  • 导出模块:
// myModule.js
export const name = 'Alice';
export function greet() {console.log('Hello!');
}
  • 导入模块:
// main.js
import { name, greet } from './myModule.js';
console.log(name); // Alice
greet(); // Hello!

10. JSON 操作

JavaScript 提供了内置的 JSON 对象来处理 JSON 数据格式。

  • 字符串化和解析:
let obj = { name: 'Alice', age: 25 };
let jsonString = JSON.stringify(obj); // 转为 JSON 字符串
let parsedObj = JSON.parse(jsonString); // 解析 JSON 字符串

总结

原生 JavaScript 是构建 Web 应用的基础,能够处理 DOM 操作、事件监听、异步请求等核心功能。理解以上这些内容可以帮助你更好地使用和掌握 JavaScript,从而有效地进行 Web 开发。如果你想深入学习原生 JavaScript,可以参考 MDN 文档或其他相关教程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

库打包工具 rollup

库打包工具 rollup 摘要 **概念&#xff1a;**rollup是一个模块化的打包工具 注&#xff1a;实际应用中&#xff0c;rollup更多是一个库打包工具 与Webpack的区别&#xff1a; 文件处理&#xff1a; rollup 更多专注于 JS 代码&#xff0c;并针对 ES Module 进行打包webpa…

基于promtail+loki+grafana搭建日志系统

文章目录 Promtail安装promtail创建配置文件创建systemd 服务文件启动promtail服务 loki下载loki服务创建config.yml文件创建systemd服务文件启动loki grafana下载grafana 本文基于promtaillokigrafanaprometheus&#xff08;可选&#xff09; 搭建一个轻量快速的日志系统&…

微服务容器化部署实践(FontConfiguration.getVersion)

文章目录 前言一、整体步骤简介二、开始实战1.准备好微服务2.将各个微服务打包为镜像第一种第二种3. 将各个打包好的镜像,通过docker-compose容器编排,运行即可总结前言 docker容器化部署微服务: 将微服务容器化部署到 Docker 容器中是一个常见的做法,可以提高应用的可移…

人工智能(AI)和机器学习(ML)技术学习流程

目录 人工智能(AI)和机器学习(ML)技术 自然语言处理(NLP): Word2Vec: Seq2Seq(Sequence-to-Sequence): Transformer: 范式、架构和自注意力: 多头注意力: 预训练、微调、提示工程和模型压缩: 上下文学习、思维链、全量微调、量化、剪枝: 思维树、思维…

Python 操作数据库:读取 Clickhouse 数据存入csv文件

import pandas as pd from clickhouse_driver import Client import timeit import logging import threading from threading import Lock from queue import Queue from typing import List, Dict, Set from contextlib import contextmanager import os import time# 配置参…

SCP收容物211~215

注 &#xff1a;此文接SCP收容物201~210,本文只供开玩笑 ,与steve_gqq_MC合作 --------------------------------------------------------------------------------------------------------------------------------- 目录 scp-211 scp-212 scp-213 scp-214 scp-215 s…

带你读懂什么是AI Agent智能体

一、智能体的定义与特性 定义&#xff1a;智能体是一个使用大语言模型&#xff08;LLM&#xff09;来决定应用程序控制流的系统。然而&#xff0c;智能体的定义并不唯一&#xff0c;不同人有不同的看法。Langchain的创始人Harrison Chase从技术角度给出了定义&#xff0c;但更…

docker-compose在阿里云服务器上部署https所踩的各种坑(已成功部署)

前言 购买服务器&#xff0c;申请域名&#xff0c;申请证书&#xff0c;下载nginx证书&#xff0c;这些操作我就不说了&#xff0c;百度一大把&#xff0c;我只说一下部署中碰到的问题 问题 我们是docker-compose上部署的后台前台环境&#xff0c;配置https证书&#xff0c;…

Qt_day3_信号槽

目录 信号槽 1. 概念 2. 函数原型 3. 连接方式 3.1 自带信号 → 自带槽 3.2 自带信号 → 自定义槽 3.3 自定义信号 4. 信号槽传参 5. 对应关系 5.1 一对多 5.2 多对一 信号槽 1. 概念 之前的程序界面只能看&#xff0c;不能交互&#xff0c;信号槽可以让界面进行人机…

lua入门教程:math

在Lua中&#xff0c;math库是一个非常重要的内置库&#xff0c;它提供了许多用于数学计算的函数。这些函数可以处理各种数学运算&#xff0c;包括基本的算术运算、三角函数、对数函数、随机数生成等。结合你之前提到的Lua中的数字遵循IEEE 754双精度浮点标准&#xff0c;我们可…

UI架构解说

UI&#xff08;用户界面&#xff0c;User Interface&#xff09; 是指用户与软件或硬件系统进行交互的界面。 它是用户与系统之间的桥梁&#xff0c;允许用户通过视觉元素、交互组件和反馈机制来操作和控制应用程序或设备。 UI 设计的目标是提供直观、易用和愉悦的用户体验&a…

《ElementPlus 与 ElementUI 差异集合》Icon 图标 More 差异说明

参考 《element plus 使用 icon 图标(两种方式)》使用 icon 升级 Vue2 升级 Vue3 项目时&#xff0c;遇到命名时的实心与空心点差异&#xff01; ElementUI&#xff1a; 实心是 el-icon-more空心是 el-icon-more-outline ElementPlus&#xff1a; 实心是 el-icon-more-fill…

RWKV 通过几万 token 的 CoT 解决几乎 100% 的数独问题(采用 29M 参数的小模型)

RWKV 做 CoT 特别有优势&#xff0c;因为推理速度和显存占用与上下文无关。即使做几百万 token 的 CoT 也不会变慢或额外消耗显存。 RWKV 社区开发者 Jellyfish042 训练了一个用于解决数独谜题的专用 RWKV 模型 Sudoku-RWKV &#xff0c;项目的训练代码和数据制作脚本均已开源…

上海市计算机学会竞赛平台2024年11月月赛丙组

题目描述 在一个棋盘上&#xff0c;有两颗棋子&#xff0c;一颗棋子在第 aa 行第 bb 列&#xff0c;另一个颗棋子在第 xx 行第 yy 列。 每一步&#xff0c;可以选择一个棋子沿行方向移动一个单位&#xff0c;或沿列方向移动一个单位&#xff0c;或同时沿行方向及列方向各移动…

【异质图学习】异构图神经网络中的自监督学习:基于语义强度和特征相似度的对比学习

【异质图学习】异构图神经网络中的自监督学习&#xff1a;基于语义强度和特征相似度的对比学习 简介&#xff1a;本文探讨了异构图神经网络中自监督学习的应用&#xff0c;特别是基于语义强度和特征相似度的对比学习技术。通过对比学习&#xff0c;模型能够从无标签数据中学习…

postgres+timescaledb--离线安装,centos7.9

操作系统是centos7.9&#xff0c;使用的hper-V,安装的虚拟机环境&#xff0c;安装好操作系统之后&#xff0c;让系统不连外网后直接按下方操作安装。 方式1&#xff0c;使用压缩包&#xff0c;复杂一点。&#xff08;第一种方式暂时没有安装timescaledb&#xff09; 装备安装…

MyBatis xml 文件中 SQL 语句的小于号未转义导致报错

问题现象 在 MyBatis 的 xml 文件中添加了一个 SQL 语句 <select id"countXxx" resultType"int">select count(*) from t1 where count < 3 </select>启动 Spring Boot 应用程序后报错&#xff1a; Caused by: org.apache.ibatis.builde…

深入剖析输入URL按下回车,浏览器做了什么

DNS 查询 首先,是去寻找页面资源的位置。如果导航到https://example.com, 假设HTML页面被定位到IP地址为93.184.216.34 的服务器。如果以前没有访问过这个网站&#xff0c;就需要进行DNS查询。 浏览器向域名服务器发起DNS查询请求&#xff0c;最终得到一个IP地址。第一次请求…

Hutool-Java工具库

日期时间 1、DateUtil 获取当前时间 import cn.hutool.core.date.DateUtil;import java.util.Calendar; import java.util.Date; //当前时间字符串&#xff0c;格式&#xff1a;yyyy-MM-dd HH:mm:ssDate date DateUtil.date();Date date2 DateUtil.date(Calendar.getInstan…

ceph介绍和搭建

1 为什么要使用ceph存储 什么是对象存储&#xff1f; 对象存储并没有向文件系统那样划分为元数据区域和数据区域&#xff0c;而是按照不同的对象进行存储&#xff0c;而且每个对象内部维护着元数据和数据区域。因此每个对象都有自己独立的管理格式。 对象存储优点&#xff1a…