JavaScript快速入门系列-2(JavaScript语言基础)

news2025/7/7 16:43:58

第二章:JavaScript语言基础

    • 2.1 变量声明:`let`, `const`, `var`
      • 2.1.1 变量是什么?
      • 2.1.2 `var`
      • 2.1.3 `let`与`const`
      • 2.1.4 选择哪个关键字?
    • 2.2 数据类型
      • 2.2.1 基本数据类型
      • 2.2.2 复杂数据类型
      • 2.2.3 示例与类型检测
    • 2.3 运算符
      • 2.3.1 算术运算符
      • 2.3.2 比较运算符
      • 2.3.3 逻辑运算符
      • 2.3.4 赋值运算符
      • 2.3.5 例子
    • 2.4 控制结构
      • 2.4.1 if...else
      • 2.4.2 switch
      • 2.4.3 for循环
      • 2.4.4 while和do...while

开篇图

在这一章节中,我们将深入探索JavaScript的基石——语言基础。从变量声明到数据类型的掌握,再到运算符和控制结构的运用,你将逐步构建起对这门动态语言的坚实理解。让我们一起启程,踏入JavaScript的奇妙世界。

2.1 变量声明:let, const, var

2.1.1 变量是什么?

在编程中,变量就像是一个可以存放数据的容器。你可以把它想象成一个标签,贴在一个盒子上,盒子里面可以放任何东西——数字、字符串、甚至复杂的对象和数组。在JavaScript中,我们使用关键字来声明这些变量。

2.1.2 var

早期的JavaScript中,var是最常用的变量声明方式,但它有一些特殊的规则,比如变量提升(hoisting)和函数作用域/全局作用域的限制,这可能会导致一些意料之外的行为。

console.log(x); // 输出undefined,因为var声明会被提升
var x = 5;

2.1.3 letconst

ES6引入了letconst,为变量声明带来了新的维度。let允许你在块级作用域内声明变量,而const则是用来声明那些一旦赋值就不应该改变的常量。

{
  let y = 10;
  console.log(y); // 输出10
}
// console.log(y); // 这里会报错,因为y只在上面的块级作用域内有效

const PI = 3.14; // 声明一个常量
PI = 3; // 错误!尝试修改常量会引发错误

2.1.4 选择哪个关键字?

  • let:当你需要一个在特定块内可变的值。
  • const:用于不会改变的值,如数学常量或对象引用(虽然对象本身可变)。
  • var:尽量避免使用,除非处理旧代码或有特殊需求。

2.2 数据类型

JavaScript是一种弱类型语言,它会根据上下文自动推断变量的类型。主要的数据类型包括:

2.2.1 基本数据类型

  • 字符串 (string):文本信息,用单引号(’ ')或双引号(" ")包围。
  • 数字 (number):整数或浮点数。
  • 布尔值 (boolean):真(true)或假(false)。
  • null:表示一个空对象指针。
  • undefined:表示变量已被声明但未被初始化。
  • Symbol (ES6新增):独一无二的值,常用于对象的键。

2.2.2 复杂数据类型

  • 对象 (object):无序的属性集合。
  • 数组 (array):有序的元素集合,元素可以是任意类型。
  • Function:JavaScript的一等公民,可以作为其他变量的值。

2.2.3 示例与类型检测

let name = "Alice"; // 字符串
let age = 25; // 数字
let isStudent = true; // 布尔值
let empty = null; // null
let undefinedVar; // undefined

console.log(typeof name); // "string"
console.log(typeof age); // "number"
console.log(typeof isStudent); // "boolean"
console.log(typeof empty); // "object" - 注意这个特殊的类型检测结果
console.log(typeof undefinedVar); // "undefined"

let person = {name: "Bob", age: 30}; // 对象
let friends = ["Alice", "Charlie"]; // 数组
let greet = function() { console.log("Hello"); }; // 函数

console.log(Array.isArray(friends)); // true
console.log(friends instanceof Array); // true

2.3 运算符

2.3.1 算术运算符

包括加+、减-、乘*、除/、取余%等基本运算。

2.3.2 比较运算符

如等于==(类型转换)、严格等于===(不进行类型转换)、不等于!=、严格不等于!==、大于>、小于<等。

2.3.3 逻辑运算符

包括与&&、或||、非!。逻辑运算符常用于条件判断中。

2.3.4 赋值运算符

除了基本的=外,还有复合赋值运算符,如+=, -=, *=, /=, %=, 等。

2.3.5 例子

let x = 10;
let y = 5;

let sum = x + y; // 算术运算
console.log(sum); // 15

let isEqual = x === y; // 严格等于
console.log(isEqual); // false

let isGreater = x > y; // 比较运算
console.log(isGreater); // true

let result = (x > 0) && (y < 10); // 逻辑与
console.log(result); // true

x += 2; // 复合赋值
console.log(x); // 12

2.4 控制结构

2.4.1 if…else

基于条件执行不同的代码块。

let score = 85;

if(score >= 90){
    console.log("优秀");
} else if(score >= 80){
    console.log("良好");
} else {
    console.log("加油");
}

2.4.2 switch

多分支选择结构,基于不同的情况执行代码。

let day = "Monday";

switch(day){
    case "Monday":
        console.log("新的一周开始了!");
        break;
    case "Friday":
        console.log("马上周末了!");
        break;
    default:
        console.log("继续努力工作!");
}

2.4.3 for循环

重复执行一段代码直到满足终止条件。

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

2.4.4 while和do…while

while在条件为真时执行循环体,do...while至少执行一次循环体,然后检查条件。

let count = 0;

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

do {
    console.log(count);
    count++;
} while(count < 5);

结前图

通过这一章节的学习,你已经掌握了JavaScript的基础构造块。从变量声明到数据类型,再到运算符和控制结构的运用,这些知识是构建复杂程序的基石。接下来,我们将利用这些基础,探索更高级的函数、对象操作,以及如何与浏览器交互,敬请期待!

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

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

相关文章

C++基础知识(八:STL标准库 Map和multimap )

Map C 标准模板库&#xff08;STL&#xff09;中的 map 容器是一种非常有用的关联容器&#xff0c;用于存储键值对&#xff08;key-value pairs&#xff09;。在 map 中&#xff0c;每个元素都由一个键和一个值组成&#xff0c;其中键是唯一的&#xff0c;而值则可以重复。 基…

来自IEEE编委的发文建议及最佳实践

1.注意关键词(会涉及是否能找到合适的评审人) 2. Intro部分 contribution 通常3-4点 3. 注意文章中的符号使用前后统一 4.需要分析最终的结果(对之后的研究有什么帮助) 5.结论的部分 切忌虎头蛇尾,需要分析优点和缺点 建议未来的研究方向 6.参考文献

2001-2023年上市公司数字化转型测算数据(含原始数据+处理代码+计算结果)

2001-2023年上市公司数字化转型测算数据&#xff08;含原始数据处理代码计算结果&#xff09;&#xff08;吴非&#xff09; 1、时间&#xff1a;2001-2023年 2、来源&#xff1a;上市公司年报 3、指标:行业代码、行业名称、证券简称、是否发生ST或ST或PT、是否发生暂停上市…

max code size exceeded

Warning! Error encountered during contract execution [max code size exceeded] 智能合约编译时提示 contracts/core/CORE.sol:15:1: Warning: Contract code size exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on m…

自研一套带双向认证的Android通用网络库

当前&#xff0c;许多网络库基于Retrofit或OkHttp开发&#xff0c;但实际项目中常需要定制化&#xff0c;并且需要添加类似双向认证等安全功能。这意味着每个项目都可能需要二次开发。那么&#xff0c;有没有一种通用的封装方式&#xff0c;可以满足大多数项目需求&#xff1f;…

什么是端口转发?路由器如何正确的设置端口转发和范围转发?(外网访问必备设置)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 端口转发 📒🚀 端口转发的应用场景💡 路由器如何设置端口转发(示例)💡 端口范围转发(示例)🎯 范围转发的应用场景🛠️ 设置范围转发📝 范围转发实操示例🎈 注意事项 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 …

如何平衡安全访问和办公效率?零信任安全×统一身份才是解决之道

在远程办公、混合办公、跨团队协作日益频繁的今天&#xff0c;企业的业务开展需要支持多种访问接入的需求和场景。如何平衡企业数据的安全访问和办公效率将成为挑战。 在业务的多种接入场景上&#xff0c;企业引入零信任&#xff08;Zero Trust&#xff0c;ZT&#xff09;产品…

鸿蒙用 BuilderParam 实现同一个布局不同内容组件

面通过一个案例展示BuilderParam的具体用法&#xff0c;例如&#xff0c;现需要实现一个通用的卡片组件&#xff0c;如下图所示 卡片中显示的内容不固定&#xff0c;例如 具体实现代码如下&#xff1a; Entry Component struct BuildParamDemo {build() {Column(){Card() {imag…

aac如何转化mp3?超好用的四种音频转换方法!

aac如何转化mp3&#xff1f;AAC格式可能鲜为人知&#xff0c;但实际上它是一种音频文件格式&#xff0c;然而&#xff0c;AAC的应用却不太广泛&#xff0c;这并非偶然&#xff0c;首先&#xff0c;使用AAC需要支付专利费用&#xff0c;这对于个人和公司都可能是一笔不小的开支&…

【网络安全】【深度学习】【入侵检测】SDN模拟网络入侵攻击并检测,实时检测,深度学习【一】

文章目录 1. 前言2. Mininet 和 Ryu 的区别2.1 Mininet2.2 Ryu2.3 总结 3. 模拟攻击3.1 环境准备3.2 创建 Mininet 网络拓扑3.2 启动 Ryu 控制器3.3 模拟网络攻击3.4 捕获流量 4. 实时异常检测4.1 在 Ryu 控制器中4.2 在 h2 机器上的实验结果4.3 深度学习模型部署上h2机器 帮助…

Git保姆级教程

目录 Git是什么&#xff0c;为什么要学这个工具&#xff1f; 码云注册并创建仓库 Git安装 查看本地仓库状态 添加到暂存区 提交到本地库 修改文件 版本回退 创建、切换和删除分支 合并分支 克隆远端库到本地 将本地库推送到远端库 命令设置别名 Git是什么&#xf…

Qt 竖排文字研究(一)

在传统的编程环境中&#xff0c;代码的排列方式通常是水平的&#xff0c;这是基于我们日常的阅读习惯和编程规范。但是&#xff0c;当我们尝试打破这一常规&#xff0c;将代码字符以竖排的方式呈现时&#xff0c;发现没有什么现成有效的方式。所以本文基于Qt 的场景视图下&…

水表摄像直读抄表仪

1.技术性简述 水表摄像直读抄表仪&#xff0c;是一种前沿的智能计量机器设备&#xff0c;它利用超清摄像头部和图像识别算法&#xff0c;完成了远程控制、非接触的水表载入。这一技术的普及&#xff0c;颠覆了传统式人力抄表的形式&#xff0c;提高了效率&#xff0c;降低了不…

eclipse如何导入springboot项目

打开eclipse 找到你的springboot项目 点击finish即可 test02就已经导入进去了 配置一下maven 在将那个springboot项目刷新一下即可 运行成功

搭建 Redis 集群【Windows】

Redis 集群是一个分布式存储解决方案&#xff0c;它将数据分布在多个Redis节点上&#xff0c;以提高系统的可伸缩性、可靠性和性能。 1. 集群概念与特点 集群概念&#xff1a;Redis集群是由多个相互独立的 Redis 节点组成&#xff0c;这些节点通过高速网络互联&#xff0c;并作…

Java多线程-StampedLock(原子读写锁)

StampedLock 是读写锁的实现&#xff0c;对比 ReentrantReadWriteLock 主要不同是该锁不允许重入&#xff0c;多了乐观读的功能&#xff0c;使用上会更加复杂一些&#xff0c;但是具有更好的性能表现。StampedLock 的状态由版本和读写锁持有计数组成。 获取锁方法返回一个邮戳&…

源代码防泄密经验分享之安全上网篇

场景描述&#xff1a; 随着信息技术的发展&#xff0c;越来越多的新技术产品进入到政府、军事、科研等涉密单位。这些新技术产品在给工作人员带来便利的同时&#xff0c;也给信息安全保密工作带来了许多新的不容忽视的安全隐患&#xff0c;应引起高度重视。常规的内外网隔离手…

VSCode插件开发之初始化项目

VS code常见组件 在VS Code插件开发中&#xff0c;常用的组件有很多&#xff0c;这些组件可以帮助你实现各种功能和交互。以下是一些常见的组件&#xff1a; Extension API模块: 提供了许多类和方法&#xff0c;用于与VS Code编辑器进行交互&#xff0c;例如vscode.workspace用…

抽象语法树AST(Abstract Syntax Tree)

抽象语法树(Abstract Syntax Tree) 抽象语法树&#xff08;Abstract Syntax Tree&#xff0c;AST&#xff09;是源代码语法结构的一种抽象表示它以树状的形式表现编程语言的语法结构&#xff0c;树上的每个节点都表示源代码中的一种结构 抽象语法树用途 代码语法的检查、代码…

辣椒属2个T2T基因组-文献精读23

Two telomere-to-telomere gapless genomes reveal insights into Capsicum evolution and capsaicinoid biosynthesis 两个端粒到端粒无缝基因组揭示了辣椒进化和辣椒素生物合成的相关见解 摘要 辣椒&#xff08;Capsicum&#xff09;因其果实中含有辣椒素而闻名&#xff0c…