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

JavaScript基础知识

目录

1.变量

1.1 const

1.2 var

1.3 let

2.输入与输出

2.1 输入

2.2 输出

3.数据类型

3.1 基本数据类型

3.2 复杂数据类型

4.流程控制

4.1 条件控制

4.2 循环控制

4.2.1 for 循环

4.2.2 while 循环

4.2.3 do...while 循环

5.概念解释

5.1 变量提升

5.2 暂时性死区

5.3 块级作用域

5.4 函数作用域


1.变量

定义:用来存储数据的容器,本质上是程序在内存中申请一块用来存放数据的空间

1.1 const

在JavaScript中,使用const(ES6+)来定义常量,使用const定义的常量有以下特点:

(1)块级作用域:只在声明的代码块‘{}’内有效。

(2)不允许重复声明:使用const声明常量在一个代码块中只允许声明一次。

(3)声明时必须初始化:声明 const 变量的同时必须赋值,否则会报错。

(4)不允许重新赋值:一旦声明,就不能再指向其他的值。

(5)不存在变量提升:存在"暂时性死区"

总结:通过const的特点我们可以大致总结出结论,也就是在Javascript中使用const来声明常量,该常量只在当前代码块中有效,外部不能访问并且在声明过程中必须初始化,它的值一旦确认便不能修改。


1.2 var

在JavaScript中,使用var(ES5)来定义变量,使用var定义的常量有以下特点:

(1)函数作用域:他只在函数内部有效,在全局中,他不认识if、for等代码块,所以在这些代码块里面使用var定义这些变量会导致在该代码块外面也能访问。

(2)变量提升:无论 var 声明写在函数或作用域的哪一行,它都会被“提升”到作用域的顶部。但只有声明被提升,赋值不会被提升

(3) 允许重复声明:在同一个作用域内,你可以用 var多次声明同一个变量,后面的声明会覆盖前面的

总结:通过var的特点可以总结出,var声明的变量具有函数作用域,不受代码块(如if、for)限制,因此在这些代码块外也能访问;声明会被变量提升到作用域顶部,但赋值不会;在同一作用域内可以重复声明同名变量,后声明的会覆盖前面的值。由于这些特性,var可能导致变量污染和意外覆盖,现代开发中一般建议避免使用var。


1.3 let

let是ES6+的属性,是为了解决var产生的一些问题诞生的,在现代js开发声明变量一般使用let,let有以下特点:

(1)块级作用域:只在声明的代码块 {} 内有效。

(2)不存在变量提升let 声明的变量不会被提升。从代码块开始到 let 声明语句之前的这个区域,被称为“暂时性死区”(Temporal Dead Zone, TDZ)。在这个区域内访问变量会直接报错。

(3)不允许重复声明:在同一个作用域内,不允许用 let 重复声明一个已经存在的变量(无论是 varlet 还是 const 声明的)。

总结:通过let的特点可以总结出,let声明的变量具有块级作用域,只在当前代码块内有效;不存在变量提升,存在暂时性死区,访问声明之前会报错;同一作用域内不允许重复声明同名变量(无论是var、let还是const)。因此,let弥补了var作用域和提升带来的缺陷,是现代JavaScript中推荐使用的变量声明方式。


2.输入与输出

2.1 输入

(1)prompt

用于弹出一个对话框,提示用户输入内容,返回用户输入的字符串。例如:

let name = prompt("请输入你的名字:");

2.2 输出

(1)console.log()

用于在浏览器的控制台输出信息,常用于调试。

console.log("Hello, world!");

(2)alter

弹出一个警告框,显示一段消息,用户点击确定后关闭。

alert("这是一个提示框");

3.数据类型

3.1 基本数据类型

(1)Number

表示数字,包括整数和浮点数。
例如:let num = 123;

(2)String

表示字符串,用单引号或双引号括起来的文本。
例如:let str = "Hello";

(3)Boolean

表示布尔值,只有两个值:truefalse
例如:let flag = true;

(4)Undefined

表示变量声明了但未赋值时的默认值。
例如:let a; console.log(a); // 输出 undefined

(5)Null

表示“无值”,常用于表示变量为空。
例如:let b = null;

(6)Symbol(ES6新增)

表示唯一的标识符。
例如:let sym = Symbol("id");

(7)BigInt(ES2020新增)

用于表示大整数。
例如:let big = 123456789012345678901234567890n;


3.2 复杂数据类型

(1)Object
复杂数据类型的基础,包含键值对。
例如:

let obj = {name: "Alice", age: 25};

(2)Array
有序列表,实际上是特殊的对象。
例如:

let arr = [1, 2, 3, 4];

(3)Function
函数也是对象,可以被调用执行。
例如:

function greet() { console.log("Hello"); }

4.流程控制

4.1 条件控制

(1)if 语句

根据条件执行代码块。

if (condition) {// 条件为真时执行
} else if (otherCondition) {// 其他条件为真时执行
} else {// 条件都不满足时执行
}

(2)switch语句

多分支选择结构。

switch (expression) {case value1:// 代码块break;case value2:// 代码块break;default:// 默认代码块
}

4.2 循环控制

4.2.1 for 循环

(1)普通for 循环

语法:

for (初始化表达式; 条件表达式; 迭代表达式) {
  // 循环体
}

说明:

  • 初始化表达式:通常用来定义循环变量,如 let i = 0
  • 条件表达式:每次循环开始前判断,条件为 true 执行循环体,否则退出循环。
  • 迭代表达式:每次循环结束后执行,通常用于更新循环变量(如 i++)。

示例:

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

适用场景:

  • 需要精确控制循环次数。
  • 需要使用索引访问数组元素。

(2)for...in 循环

语法:

for (let key in object) {
  // 循环体
}

说明:

  • 用于遍历对象的可枚举属性(包括继承的属性)。
  • key 是属性名(字符串类型)。
  • 不适合用来遍历数组,因为遍历顺序不保证且会遍历继承属性。

示例:

const obj = {a: 1, b: 2, c: 3};
for (let key in obj) {console.log(key, obj[key]);
}
// 输出:
// a 1
// b 2
// c 3

注意事项:

(3)for...of 循环

语法:

for (let item of iterable) {
  // 循环体
}

说明:

  • 用于遍历可迭代对象(如数组、字符串、Map、Set等)。
  • item 是当前遍历的元素值。
  • 不能直接用于普通对象(因为对象不是可迭代的)。

示例:

const arr = ['a', 'b', 'c'];
for (let value of arr) {console.log(value);
}
// 输出:a b c

适用场景:

  • 遍历数组、字符串、Map、Set 等。
  • 代码简洁,避免索引操作。

4.2.2 while 循环

条件为真时重复执行代码块。

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

4.2.3 do...while 循环

先执行一次代码块,再判断条件是否继续循环。

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

5.概念解释

5.1 变量提升

变量提升是指JavaScript在代码执行前,会先将所有变量声明(var声明的变量)“提升”到当前作用域的顶部,但只有声明被提升,赋值不会提升。这意味着你可以在声明之前访问变量,结果是undefined,而不是报错。

示例:

console.log(a); // 输出 undefined
var a = 10;

等价于:

var a;
console.log(a); // undefined
a = 10;

5.2 暂时性死区

暂时性死区是指在使用letconst声明变量的块级作用域内,从块的开始到变量声明之前的这段区域,变量处于“不可访问”的状态。如果在这段时间内访问变量,会导致运行时错误(ReferenceError)。

示例:

这说明变量b虽然在块内,但在声明之前是不可用的,这段时间就是暂时性死区。

console.log(b); // 报错 ReferenceError
let b = 20;

5.3 块级作用域

块级作用域是指变量只在一对大括号{}包围的代码块内部有效letconst声明的变量具有块级作用域。

示例:

{let x = 5;console.log(x); // 5
}
console.log(x); // 报错 ReferenceError,x在块外不可访问

5.4 函数作用域

函数作用域是指用var声明的变量在整个函数内部有效,函数外部不可访问。不同于块级作用域,var声明的变量不受代码块(如if、for)限制,只受函数作用域限制

示例:

function foo() {if (true) {var y = 10;}console.log(y); // 10,y在整个函数内有效
}
foo();
console.log(y); // 报错 ReferenceError,y在函数外不可访问

http://www.dtcms.com/a/456888.html

相关文章:

  • 以太网数据报文各协议字段深度解析(第一、二章)
  • microsoft做网站浙江建设培训中心网站
  • 从LLM角度学习和了解MoE架构
  • 【学习笔记06】内存管理与智能指针学习总结
  • 0、FreeRTOS编码和命名规则
  • 无锡专业制作网站wordpress 手风琴
  • 通过camel AI创建多agent进行写作
  • qt常用控件
  • 离散化模板
  • linphone + minisipserver 下载和配置
  • 网站建设登录界面代码wordpress 按钮美化
  • 吴恩达机器学习课程(PyTorch 适配)学习笔记:3.4 强化学习
  • jEasyUI 自定义窗口工具栏
  • Spring Boot 和 MyBatis 环境下实现动态数据源切换
  • 2025 年度国产大模型「开源 vs. 闭源」深度评测与实战指南
  • 网页设计与网站建设电话香洲网站建设
  • 移动论坛网站模板免费下载revolution slider wordpress
  • TPM(Total Productive Maintenance)现场管理
  • 从 0 到 1 搭建 Python 语言 Web UI自动化测试学习系列 11 自动化测试--框架设计--基础知识 7--各种弹窗处理
  • ubuntu terminal 设置代理
  • 《传感器与检测技术》第 2 章 电阻式传感器原理与应用
  • Linux中input子系统
  • 探索Linux:开源世界的钥匙
  • GitHub 热榜项目 - 日榜(2025-10-08)
  • 手写Function.prototype.bind:从原理到完整实现
  • 百度做网站的公司施工企业的施工现场消防安全责任人应是
  • 做电商网站报价网站开发工程师需要会写什么
  • (3)容器布局进阶:Spacer、Divider、Frame 与 Alignment
  • 墨西哥证券交易所(BMV)等多个交易所股票数据API对接文档
  • 【数据分析与可视化】2025年一季度金融业主要行业资产、负债、权益结构与增速对比