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

【JavaScript】JavaScript 常见概念 - 变量与数据类型 - 运算符 - 条件语句 - 循环 - 函数 - 数组操作 - 对象

1. 变量与数据类型

变量声明

JavaScript 提供了三种方式来声明变量:

  • var(全局或函数作用域,不推荐)
  • let(块级作用域,推荐)
  • const(常量,块级作用域,推荐)
var a = 10;  // 可重新赋值,函数作用域
let b = 20;  // 可重新赋值,块级作用域
const c = 30; // 不能重新赋值,块级作用域

数据类型

  • 基本数据类型(值类型)
    • Number(数字)
    • String(字符串)
    • Boolean(布尔值)
    • Undefined(未定义)
    • Null(空值)
    • Symbol(独特值)
    • BigInt(大整数)
let num = 42; // Number
let str = "Hello"; // String
let bool = true; // Boolean
let notDefined; // Undefined
let emptyValue = null; // Null
let uniqueKey = Symbol("key"); // Symbol
let bigIntNum = 9007199254740991n; // BigInt
  • 引用数据类型
    • Object(对象)
    • Array(数组)
    • Function(函数)
let obj = { name: "Alice", age: 25 };
let arr = [1, 2, 3, 4, 5];
let func = function() { return "Hello"; };

2. 运算符

JavaScript 提供了多种运算符:

  • 算术运算符+, -, *, /, %, ++, --
  • 赋值运算符=, +=, -=, *=, /=
  • 比较运算符==, ===, !=, !==, >, <, >=, <=
  • 逻辑运算符&&, ||, !
  • 三元运算符条件 ? 值1 : 值2
let x = 10;
let y = 5;console.log(x + y);  // 15
console.log(x > y);  // true
console.log(x === "10"); // false(严格相等)
console.log(x == "10"); // true(类型转换后相等)
console.log(x > 0 && y > 0); // true

3. 条件语句

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

switch 语句:

let fruit = "apple";switch (fruit) {case "apple":console.log("Apple selected");break;case "banana":console.log("Banana selected");break;default:console.log("Unknown fruit");
}

4. 循环

// 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);

5. 函数

// 普通函数
function add(a, b) {return a + b;
}// 箭头函数
const multiply = (a, b) => a * b;console.log(add(2, 3)); // 5
console.log(multiply(2, 3)); // 6

6. 数组操作

let arr = [1, 2, 3, 4, 5];// 添加元素
arr.push(6);  // [1, 2, 3, 4, 5, 6]// 删除最后一个元素
arr.pop();  // [1, 2, 3, 4, 5]// 遍历数组
arr.forEach((num) => console.log(num));// 映射数组(每个元素乘以 2)
let newArr = arr.map(num => num * 2);
console.log(newArr); // [2, 4, 6, 8, 10]

7. 对象

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

8. 作用域与闭包

function outer() {let count = 0;return function inner() {count++;console.log(count);};
}const counter = outer();
counter(); // 1
counter(); // 2

闭包 允许内部函数访问外部函数的变量,即使外部函数已经执行完毕。


9. 异步编程

Promise

function fetchData() {return new Promise((resolve) => {setTimeout(() => resolve("Data loaded"), 2000);});
}fetchData().then((data) => console.log(data)); // 2秒后输出 "Data loaded"

async/await

async function getData() {let result = await fetchData();console.log(result);
}
getData();

10. ES6+ 语法

解构赋值

let [a, b] = [1, 2];
console.log(a, b); // 1 2let { name, age } = { name: "Alice", age: 25 };
console.log(name, age); // Alice 25

展开运算符

let arr1 = [1, 2, 3];
let arr2 = [...arr1, 4, 5];
console.log(arr2); // [1, 2, 3, 4, 5]let obj1 = { a: 1, b: 2 };
let obj2 = { ...obj1, c: 3 };
console.log(obj2); // {a: 1, b: 2, c: 3}

11. DOM 操作

document.getElementById("btn").addEventListener("click", function () {alert("Button clicked!");
});

12. 模块化

在现代 JavaScript 中,importexport 用于模块化:

// 导出
export function greet() {return "Hello!";
}// 导入
import { greet } from "./module.js";
console.log(greet()); // Hello!

总结

概念关键点
变量varletconst
数据类型数值、字符串、对象、数组
运算符+, -, *, /, ===, &&
条件语句if-else, switch
循环for, while, do-while
函数普通函数、箭头函数
数组push(), pop(), map(), forEach()
对象this 关键字、方法调用
作用域块级作用域、闭包
异步Promiseasync/await
ES6+解构、展开运算符
DOM 操作document.getElementById

相关文章:

【JavaScript】JavaScript 常见概念 - 变量与数据类型 - 运算符 - 条件语句 - 循环 - 函数 - 数组操作 - 对象

1. 变量与数据类型 变量声明 JavaScript 提供了三种方式来声明变量&#xff1a; var&#xff08;全局或函数作用域&#xff0c;不推荐&#xff09;let&#xff08;块级作用域&#xff0c;推荐&#xff09;const&#xff08;常量&#xff0c;块级作用域&#xff0c;推荐&…...

Web自动化之Selenium添加网站Cookies实现免登录

在使用Selenium进行Web自动化时&#xff0c;添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为&#xff0c;我们可以将已登录状态的Cookies存储起来&#xff0c;并在下次自动化测试或爬虫任务中直接加载这些Cookies&#xff0c;从而跳过登录步骤。 Cookies简介 …...

AI手机的技术细节

前序&#xff1a;先说各个功能涉及到的技术&#xff0c;再说宏观系统架构。AI手机有这样几个做法&#xff0c;给手机侧边增加一个按键&#xff1b;把手机的语音助手做的很好&#xff0c;能够快速稳定的进行唤醒&#xff1b;通过特殊形式的触摸手机的曲面屏位置等来进行唤醒AI …...

10. 九转金丹炼矩阵 - 矩阵置零(标记优化)

哪吒在数据修仙界中继续他的修炼之旅。这一次,他来到了一片神秘的金丹谷,谷中有一座巨大的九转金丹炉,炉身闪烁着神秘的光芒。金丹炉的入口处有一块巨大的石碑,上面刻着一行文字:“欲破此炉,需以九转金丹之力,炼矩阵之零,标记优化定乾坤。” 哪吒定睛一看,石碑上还有…...

[实现Rpc] 客户端 | Requestor | RpcCaller的设计实现

目录 Requestor类的实现 框架 完善 onResponse处理回复 完整代码 RpcCaller类的实现 1. 同步调用 call 2. 异步调用 call 3. 回调调用 call Requestor类的实现 &#xff08;1&#xff09;主要功能&#xff1a; 客户端发送请求的功能&#xff0c;进行请求描述对服务器…...

Java 大视界 -- 深度洞察 Java 大数据安全多方计算的前沿趋势与应用革新(52)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

山东大学软件学院nosql实验三

实验题目&#xff1a; 用Java做简单查询(2学时) 实验内容 用API方式&#xff0c;做简单查询。 实验要求 在以下要求中选择至少2个&#xff0c;使用Java语言实现数据查询&#xff0c;最终把数据输出到前端界面。 &#xff08;1&#xff09;找出年龄小于20岁的所有学生 &…...

正态分布的奇妙性质:为什么奇数阶中心矩(odd central moments)为零?

正态分布的奇妙性质&#xff1a;为什么奇数阶矩为零&#xff1f; 正态分布&#xff08;Normal Distribution&#xff09;是统计学中最常见的分布之一&#xff0c;它的钟形曲线几乎无处不在&#xff0c;从身高体重到测量误差&#xff0c;都能看到它的影子。除了均值和方差这两个…...

【入门音视频】音视频基础知识

&#x1f308;前言&#x1f308; 这个系列在我学习过程中&#xff0c;对音视频知识归纳总结的笔记。因为音视频相关讲解非常稀少&#xff0c;所以我希望通过这个音视频系列&#xff0c;跟大家一起学习音视频&#xff0c;希望减少初学者在学习上的压力。同时希望也欢迎指出文章的…...

游戏引擎学习第120天

仓库:https://gitee.com/mrxiao_com/2d_game_3 上次回顾&#xff1a;周期计数代码 我们正在进行一个项目的代码优化工作&#xff0c;目标是提高性能。当前正在优化某个特定的代码片段&#xff0c;已经将其执行周期减少到48个周期。为了实现这一目标&#xff0c;我们设计了一个…...

【Qt之QQuickWidget】QML嵌入QWidget中

由于我项目开始使用Widgets,换公司后直接使用QML开发&#xff0c;没有了解过如何实现widget到qml过渡&#xff0c;恰逢面试时遇到一家公司希望从widget迁移到qml开发&#xff0c;询问相关实现&#xff0c;一时语塞&#xff0c;很尴尬&#xff0c;粗略研究并总结下。 对qwidget嵌…...

Vue 3 + Vite 项目中配置代理解决开发环境中跨域请求问题

在 Vue 3 Vite 项目中&#xff0c;配置代理是解决开发环境中跨域请求问题的常见方法。通过在 Vite 的配置文件中设置代理&#xff0c;可以将前端请求转发到后端服务器&#xff0c;从而避免浏览器的同源策略限制。 1. 创建 Vue 3 Vite 项目 首先&#xff0c;确保你已经安装了…...

Eureka、ZooKeeper 和 Nacos 之间的对比

Eureka、ZooKeeper 和 Nacos 都是分布式系统中常用的服务注册与发现工具&#xff0c;但它们的定位、功能和适用场景有所不同。作为一名开发者&#xff0c;理解它们之间的对比有助于选择合适的技术栈。以下从多个维度进行详细比较&#xff1a; 1. 基本概述 Eureka 来源&#xff…...

CSS中padding和margin属性的使用

在 HTML 中&#xff0c;padding 和 margin 是用于控制元素布局和间距的重要属性。 一、Padding&#xff08;内边距&#xff09; 定义&#xff1a;Padding 是指元素内容与元素边框之间的距离。它可以在元素内部创造出空白区域&#xff0c;使得内容不会紧贴着边框。 作用 增加元…...

【Python爬虫(49)】分布式爬虫:在新兴技术浪潮下的蜕变与展望

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…...

网络安全-系统层攻击流程及防御措施

系统层攻击流程涉及多个阶段&#xff0c;攻击者通过逐步渗透以获取控制权或窃取数据。以下是详细的流程及防御措施&#xff1a; 1. 侦察&#xff08;Reconnaissance&#xff09; 信息收集&#xff1a; 主动扫描&#xff1a;使用工具如Nmap、Masscan扫描目标IP、开放端口、服务…...

centos 7 安装python3 及pycharm远程连接方法

安装openssl 使用pip3安装 virtualenv的时候会提示WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 这是因为缺少openssl 2.0以上版本 解决办法&#xff1a; 一、先确认版本 openssl version 二、安…...

【llm对话系统】如何快速开发一个支持openai接口的llm server呢

核心思路&#xff1a;使用轻量级 Web 框架&#xff0c;将 OpenAI API 请求转换为你现有推理脚本的输入格式&#xff0c;并将推理脚本的输出转换为 OpenAI API 的响应格式。 快速开发步骤列表&#xff1a; 选择合适的 Web 框架 (快速 & 简单): FastAPI: Python 最佳选择&am…...

跟着柳叶刀数字健康,学习如何通过病理切片预测分子分类对预后的影响|项目复现

小罗碎碎念 项目复现 今天和大家分享一个非常具有参考价值的项目,手把手带着大家复现一篇发表在柳叶刀数字健康的文章。 花了六个小时才完成的这篇推送,信息量非常大,遇到了很多报错问题,但是解决以后的感觉是非常爽的,先给大家展示一下最终的成果——在同一张切片上,通…...

deepseek_清华大学指导手册_pdf_1-5

deepseek_清华大学指导手册_pdf_1-5 无套路&#xff0c;无需关注&#xff0c;无需登录&#xff0c;无需app&#xff0c;直接下载&#xff1a; 下载地址 文件列表&#xff1a; 001_清华大学_DeepSeek从入门到精通.pdf 002_清华大学_DeepSeek如何赋能职场应用.pdf 003_清华大学…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...