JavaScript

JavaScript的起源?不同的JavaScript和引擎?JS版本发展史? 1995年,JavaScript诞生了。不得不提到它的标准ECMAScript, 它是一个语言标准,而非具体的语言。JavaScript除了名字有”Java”, 其它和Java没任何关系。Netscape为推广自家的LiveScript,命名中包含当时最流行的编程语言Java来蹭蹭热度。Netscape公司有些人可能不熟悉, 它就是早期被IE做浏览器对抗后来逐渐消亡一家公司。 阅读详情

目录

JavaScript基本介绍

ECMAScript

基本语法

基本对象

BOM

DOM

核心DOM

XML DOM

HTML DOM

事件监听机制

JS相关案例

案例一:电灯开关

案例二:轮播图

案例三:自动跳转首页

JavaScript基本介绍

概述:一门客户端脚本语言。运行在客户端浏览器中的,每一个浏览器都有JavaScript的解析引擎。
脚本语言:不需要编译,直接就可以被浏览器解析执行。

功能:可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验。

发展史:

  1. 1992年,Nombase公司,开发出第一门客户端脚本语言,专门用于表单的校验。命名为:C--,后来更名为:ScriptEase
  2. 1995年,Netscape(网景)公司,开发了一门客户端脚本语言:LiveScript。后来请来SUN公司的专家修改LiveScript,命名为JavaScript
  3. 1996年,微软抄袭JavaScript开发出JScript语言
  4. 1997年,ECMA(欧洲计算机制造商协会),制定出客户端脚本语言的标准:ECMAScript,统一了所有客户端脚本语言的编码方式

JavaScript = ECMAScript + JavaScript自己特有的东西(BOM+DOM)

ECMAScript

基本语法

概述:客户端脚本语言的标准。

与html结合方式

内部JS:定义<script>,标签体内容就是js代码

外部JS:定义<script>,通过src属性引入外部的js文件

注意:

1. <script>可以定义在html页面的任何地方,定义的位置会影响执行顺序

2. <script>可以定义多个

注释单行注释://注释内容
多行注释:/*注释内容*/
数据类型

原始数据类型(基本数据类型):

1. number:数字。 整数/小数/NaN(not a number 一个不是数字的数字类型)

2. string:字符串。 字符串  "abc" "a" 'abc'
3. boolean:true和false
4. null:一个对象为空的占位符

5. undefined:未定义。如果一个变量没有给初始化值,则会被默认赋值为undefined

引用数据类型:对象
变量

概述:一小块存储数据的内存空间

Java语言是强类型语言,而JavaScript是弱类型语言

强类型:在开辟变量存储空间时,定义了空间将来存储的数据的数据类型。只能存储固定类型的数据

弱类型:在开辟变量存储空间时,不定义空间将来的存储数据类型,可以存放任意类型的数据

语法:var 变量名 = 初始化值;

typeof运算符:获取变量的类型

注意:null运算后得到的是object

运算符

一元运算符:

算术运算符:+  -  *  /  % ...

赋值运算符:=  +=  -= ...

流程控制语句
特殊语法

1. 语句以;结尾,如果一行只有一条语句则;可以省略 (不建议)

2. 变量的定义使用var关键字,也可以不使用

用:定义的变量是局部变量
不用:定义的变量是全局变量 (不建议)

基本对象

Function:函数(方法)对象创建

1. var fun = new Function(形式参数列表, 方法体);

2. function 方法名称(形式参数列表){
            方法体
 }

3. var 方法名 = function(形式参数列表){
            方法体
}

属性length:代表形参的个数
特点1. 方法定义时,形参的类型不用写,返回值类型也不写
2. 方法是一个对象,如果定义名称相同的方法,会覆盖
3. 在JS中,方法的调用只与方法的名称有关,和参数列表无关
4. 在方法声明中有一个隐藏的内置对象 (数组):arguments,封装所有的实际参数
调用方法名称(实际参数列表);
Array:数组对象创建1. var arr = new Array(元素列表);
2. var arr = new Array(默认长度);
3. var arr = [元素列表];
方法

join(参数):将数组中的元素按照指定的分隔符拼接为字符串

push():向数组的末尾添加一个或更多元素,并返回新的长度

属性length:数组的长度
特点1. 数组元素的类型可变的
2. 数组长度可变的
Date:日期对象创建var date = new Date();
方法

toLocaleString():返回当前date对象对应的时间本地字符串格式

getTime():获取毫秒值。返回当前如期对象描述的时间到1970年1月1日零点的毫秒值差

Math:数学对象创建Math对象不用创建,直接使用  Math.方法名();
方法random():返回 0 ~ 1 之间的随机数。含0不含1
ceil(x):对数进行上舍入
floor(x):对数进行下舍入
round(x):把数四舍五入为最接近的整数
属性PI
RegExp:正则表达式对象正则表达式概述:定义字符串的组成规则
单个字符:[ ]

如:[a]、[ab]、[a-zA-Z0-9_]

特殊符号代表特殊含义的单个字符:
\d:单个数字字符 [0-9]
\w:单个单词字符 [a-zA-Z0-9_]

量词符号?:表示出现0次或1次
*:表示出现0次或多次
+:出现1次或多次
{m,n}:表示 m<= 数量 <= n
      m如果缺省: {,n}:最多n次
      n如果缺省:{m,} 最少m次
开始结束符号^:开始
$:结束
正则对象创建1. var reg = new RegExp("正则表达式");
2. var reg = /正则表达式/;
方法test(参数):验证指定的字符串是否符合正则定义的规范
Global对象特点

全局对象,这个Global中封装的方法不需要对象就可以直接调用

方法名();

方法encodeURI():url编码
decodeURI():url解码
encodeURIComponent():url编码,编码的字符更多
decodeURIComponent():url解码

URL编码:

传智播客 = %E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2

parseInt():

将字符串转为数字

逐一判断每一个字符是否是数字,直到不是数字为止,将前边数字部分转为number

isNaN():

判断一个值是否是NaN

NaN六亲不认,连自己都不认。NaN参与的==比较全部为false

eval():将JavaScript字符串,并把它作为脚本代码来执行

BOM

Browser Object Model 浏览器对象模型

概述:将浏览器的各个组成部分封装成对象。

Window:窗口对象方法与弹出框有关的方法alert():显示带有一段消息和一个确认按钮的警告框
confirm():显示带有一段消息以及确认按钮和取消按钮的对话框
* 如果用户点击确定按钮,则方法返回 true
* 如果用户点击取消按钮,则方法返回 false
prompt():显示可提示用户输入的对话框
* 返回值:获取用户输入的值
与打开关闭有关的方法

close():关闭浏览器窗口。谁调用我 ,我关谁

open():打开一个新的浏览器窗口。返回新的Window对象

与定时器有关的方法setTimeout():在指定的毫秒数后调用函数或计算表达式
* 参数:1. js代码或者方法对象    2. 毫秒值
* 返回值:唯一标识,用于取消定时器
clearTimeout():取消由 setTimeout() 方法设置的 timeout
setInterval():按照指定的周期 (以毫秒计)来调用函数或计算表达式
clearInterval():取消由 setInterval()设置的timeout
属性

获取其他BOM对象:history、location、Navigator、Screen

获取DOM对象:document

特点

Window对象不需要创建可以直接使用,window.方法名();

window引用可以省略。方法名();

Navigator:浏览器对象
Screen:显示器屏幕对象
History:历史记录对象创建 (获取)1. window.history
2. history
方法

back():加载 history列表中的前一个URL

forward():加载 history列表中的下一个URL

go(参数):加载 history列表中的某个具体页面
参数:
        * 正数:前进几个历史记录
        * 负数:后退几个历史记录
属性length:返回当前窗口历史列表中的 URL数量
Location:地址栏对象创建 (获取)1. window.location
2. location
方法reload():重新加载当前文档 (刷新)
属性href:设置或返回完整的URL

DOM

概述:将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD的动态操作。

功能:控制html文档的内容。

核心DOM

概述:针对任何结构化文档的标准模型。

Document:文档对象创建 (获取)

在html dom模型中可以使用window对象来获取

1. window.document
2. document

方法

获取Element对象:

getElementById():根据id属性值获取元素对象id属性值唯一

getElementsByTagName():根据元素名称获取元素对象们。返回值是一个数组

getElementsByClassName():根据Class属性值获取元素对象们。返回值是一个数组

getElementsByName():根据name属性值获取元素对象们。返回值是一个数组

创建其他DOM对象:

createAttribute(name)
createComment()
createElement()
createTextNode()

Element:元素对象

概述:获取页面标签 (元素)对象

获取 (创建):通过document来获取和创建

方法removeAttribute():删除属性
setAttribute():设置属性
操作Element对象修改属性值:
        1. 明确获取的对象是哪一个?
        2. 查看API文档,找其中有哪些属性可以设置
修改标签体内容:
        1. 获取元素对象
        2. 使用innerHTML属性修改标签体内容
Attribute:属性对象
Text:文本对象
Comment:注释对象

Node:节点对象

其他5个的父对象

特点:所有dom对象都可以被认为是一个节点
方法

CRUD dom树:
    *appendChild():向节点的子节点列表的结尾添加新的子节点
    *removeChild():删除(并返回)当前节点的指定子节点
    *replaceChild():用新节点替换一个子节点

属性parentNode:返回节点的父节点
超链接功能:
    1. 可以被点击:样式
    2. 点击后跳转到href指定的url
只保留功能1的实现:href =“javascript : void(0);”

XML DOM

概述:针对 XML文档的标准模型。

HTML DOM

概述:针对 HTML文档的标准模型。

标签体的设置和获取:innerHTML
控制元素样式

1. 使用元素的style属性来设置:

div1.style.border = "1px solid red";
div1.style.width = "200px";

2. 提前定义好类选择器的样式,通过元素的className属性来设置其class属性值

事件监听机制

功能:某些组件被执行了某些操作后,触发某些代码的执行。

事件:某些操作。如:单击,双击,键盘按下了,鼠标移动了
事件源:组件。如:按钮 文本输入框...
监听器:代码。

注册监听:将事件,事件源,监听器结合在一起。 当事件源上发生了某个事件,则触发执行某个监听器代码。

绑定事件:

JS相关案例

案例一:电灯开关

功能描述:点击图片切换图片,案例中为切换两张开关灯状态的图片。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>电灯开关</title>
</head>
<body>
<img id="light" src="../img/off.gif">

<script>
    //1. 获取图片对象
    let elementById = document.getElementById("light");

    //定义一个状态值
    let flag = false; //代表灯灭

    //2. 绑定单击事件
    elementById.onclick = function () {
        //3.每次点击切换图片
        if (flag === false) {
            elementById.src = "../img/on.gif";
            flag = true;
        } else {
            elementById.src = "../img/off.gif";
            flag = false;
        }
    }
</script>
</body>
</html>

实现效果:

案例二:轮播图

功能描述:图片轮换展示。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>轮播图</title>
</head>

<body>
<img id="b_img" src="../img/banner_1.jpg" width="80%">

<script>
    /*
    1. 使用img标签展示图片
    2. 定义一个方法,修改图片对象的src属性
    3. 定义一个计时器,每隔三秒调用一次方法
    */
    let number = 1;

    //修改图片src属性
    function fun() {
        number++;
        if (number > 3)
            number = 1;
        //获取img对象
        let img = document.getElementById("b_img");
        img.src = "../img/banner_" + number + ".jpg";
    }

    //定义定时器
    setInterval(fun, 1000);
</script>
</body>
</html>

实现效果:

案例三:自动跳转首页

功能描述:倒计时自动跳转到首页,这里设置的首页是百度界面。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自动跳转到首页</title>
    <!--页面效果-->
    <style>
        p {
            text-align: center;
        }

        span {
            color: red;
        }
    </style>
</head>
<body>
<p>
    <span id="time">3</span>秒之后,自动跳转到首页...
</p>

<script>
    //定义变量
    let second = 3;
    /*获取对象*/
    let time = document.getElementById("time");

    function fun() {
        second--;

        /*如果时间<=0,就跳转到首页*/
        if (second <= 0) {
            location.href = "https://www.baidu.com";
        }
        /*更改属性值*/
        time.innerText = second + "";
    }

    /*设置定时器*/
    setInterval(fun, 1000);
</script>
</body>
</html>

实现效果:


JavaScript_JS的历史与发展 JS的诞生:程序员的弃子 以下引用部分来源于: Javascript诞生记 - 阮一峰的网络日志 (ruanyifeng.com) JS的发明者是布兰登·艾奇(Brendan Eich)。他出生于1961年,本科一开始是念物理学的,后来转去了数学和计算机系。有趣的是,作为JS之父,他却并不喜欢自己的这个孩子。 90年代初的早期浏览器功能非常弱小,而且受众范围也不广。那时,浏览器最大的功能是展示一些图片和文字: 彼时,浏览器的王者是一个叫网景(Netscape)的公司开发的网景浏览器(Netscape N 阅读详情

相关推荐

深入掌握JavaScript Node.js开发

本文还有配套的精品资源,点击获取 简介:JavaScript是前端开发中的主导语言,在Node.js环境下的服务器端编程中也显示出重要性。Node.js是一个基于V8引擎的跨平台JavaScript运行环境,具有事件驱动和非阻塞I/O特性,适用于构建高性能的并发服务器。该压缩包文件可能包含有关Node.js核心概念和模块的资料,比如模块化设计、文件系统操作、HTTP服务器创...

weixin_28809949的博客 2129

深入JavaScript之JS引擎如何执行JS代码

我们大概经常能听到“执行环境”、“作用域”、“原型(链)”、“执行上下文”等内容,它们都在描述什么? JS代码的运行 我们知道了js是弱类型语言,在运行时才确定变量类型。js引擎在执行js代码时,也会从上到下进行 词法分析、语法分析、语义分析 等处理,并在代码解析完成后生成AST(抽象语法树),最终根据AST生成CPU可以执行的机器码并执行。 除此之外,JS引擎在执行代码时还会进行其它处理,如 V8 中还有两个阶段: 编译阶段:该阶段会进行执行上下文的创建,包括创建变量对象、建立作用域链、确定 this

flying meng的菜鸟居 5982

【自动驾驶控制算法】 第一讲 绪论

声明【自动驾驶控制算法】系列是博主对所分享教学内容的学习笔记,并且该系列每篇博客都会将博主听课后总结的纸质版笔记附于文末,供大家参考。是一位研究汽车领域,无人驾驶方向及其相关方向的大佬,也算是博主在无人驾驶方向的启蒙老师。所以研究相关领域的朋友推荐去听一听他的视频讲解。...

iamtbon_1的博客 1797

node.js和javascript的关系

node.js是一个基于 Chrome V8引擎的 JavaScript 运行时环境 一、类比JavaScript和java JavaScript java V8 JVM node.js JRE JavaScript和java都是一门编程语言,至于两者的关系,是雷锋和雷峰塔的关系 V8是google开源的JavaScript引擎,用于执行JavaScript,...

【小石头的茅坑】 71万+

地理空间智能体(GI Agent)

地理空间智能体(Geospatial Intelligence Agent, GI Agent)是AI Agent技术与地理信息系统(GIS)深度融合的产物。其核心是以大型语言模型(LLM)为驱动,通过自然语言理解、任务分解和工具调用能力,实现地理空间任务的自动化执行。​关键特性​自主性​:独立规划任务流程(如空间数据检索、分析、可视化);​交互性​:支持自然语言对话交互,替代传统图形界面操作;​扩展性​:灵活集成第三方工具和API,支持跨平台协作。

百态·数智思维 | 聚焦大数据、量化与未来AI 2033

新手必看:如何用Python模拟电动助力转向系统(EPS)的传感器信号处理

本文详细介绍了如何使用Python模拟电动助力转向系统(EPS)的传感器信号处理流程,包括转向力矩、转向角度和车速信号的生成与滤波处理。通过实战代码示例,帮助开发者理解ECU如何计算助力扭矩,并提供了可视化分析和性能优化建议,适合汽车电子系统开发新手学习。

weixin_28327051的博客 356

JS讲解(JavaScript)

JS,全称JavaScript,是⼀种。

m0_73776815的博客 7502

金蝶云星空应用开发初级考试题目汇总

摘要:本文为金蝶云星空应用开发初级考试题目汇总

2401_86113757的博客 3799

javaScript-如何引入js代码

javaScript-如何引入js代码 直接po代码和截图 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>js01-如何引入js代码</title> <script type="text/javascript"> //script标签的...

一只苟延残喘的卑微蝼蚁 1万+

SAP系统中PP模块全配置文档

配置路径IMG>SAP NetWeaver>常规设置>维护日历>工厂日历事务代码SCAL要求传输工厂代码描述日历代码日历描述起始日期星期一星期二星期三星期四星期五星期六星期日有效开始日期有效结束日期1000南微医学工厂MT南微医学工厂日历√√√√√√√201820502.4定义工厂配置路径IMG>生产>物料清单>常规数据>定义BOM状态事务代码OS23要求传输配置路径IMG>生产>主数据>资源>常规数据>标准值>定义参数。

yanzibing99的博客 1894

Windows 64 位系统下安装配置 DOSBox 及 debug.exe

该篇博客同样作为类似问题 “如何在 Windows 64 位系统下进入 debug” 的答案。 很多同学初看王爽的《汇编语言》,或者因为其它原因需要进入 debug 调试模式下学习汇编语言的时候,会发现进入不了,出现类似以下的错误提示。 这是因为他们使用的是 64 位的 Windows 系统(Win 7,Win 8 以及 Win 10 等),而 64 位 Windows 系统不再支持在命令提示符窗口下进入 debug 调试模式。那么对于使用 64 位 Windows 系统的用户来说,该怎样才能够顺利进入 d

加号减减号的博客 5万+

原生JS(JavaScript)

JS 是JavaScript的简述 JS基于对象和事件驱动脚本语言,作用在浏览器上 JS的事件 onsubmit 主要用于表单的提交,绑定的位置在form标签里面,要有返回标记,如果提交的数据校验未通过,不允许表单提交 onload 用于页面加载的时候使用的事件,绑定的位置在body标签里,也可以用window.οnlοad=function(){} onclick/ondblclick 主要用于鼠标点击事件,常见的有按钮、图片、文字、超链接等等 onfocus/onblur 聚焦离焦事件,主要用

断肠人在刷牙〃的博客 9392

【STK】手把手教你利用STK进行导弹和反导仿真04 - STK/MMT模块03 导弹飞行工具应用案例

飞行设置的工具栏就在附加窗口的中间,首先点击左边的General,修改这个项目的名字。然后在下拉的System中选择导弹的类型,这里我们选择远程。(4)输出数据文件到STK,任务窗口里选择Export Manager项,飞行数据输出到STK。项目可以命名为Test;(1)首先建立新项目,点击Flight菜单中的New Flight选项,见下图。首先看世界地图中间的红圈,是一个导弹形状的图标,这个图标表示的是导弹的发射点。选择下面的Export Manager,依次勾选红框的选项。我们拖动这个导弹的图标,

weixin_44184852的博客 1631

Node.js和Javascript的异同

JavaScript的组成: ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象) DOM(一些操作页面元素的方法) BOM(一些操作浏览器的方法) Nodejs的组成: ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象) os(操作系统) file(文件系统) net(网络系统) ...

【小石头的茅坑】 71万+

时序预测 | MATLAB实现NGM(1,1)多变量灰色时间序列预测

时序预测 | MATLAB实现NGM(1,1)多变量灰色时间序列预测

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 1517

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【JavaScript】JS对象和JSON

var perStr='{"属性名":"属性值","属性名":"属性值","属性名":{},"属性名":["","",""],"属性名":[{},{},{}]}'3、创建数组并初始化:new Array("one","two",2) ,可简写: var 数组名=[元素,...]9、数组.splice(start,deleteCount,[添加的元素,...])---删除或删除添加原数组元素。1、数组1.concat(数组2)---返回数组1和数组2合并后的新数组。

想做职场小白吗? 我来教您....... 3200

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

QT与JavaScript交互/Qt调用JS脚本

QT与JavaScript交互 简介 本篇主要对QT与JavaScript的交互方法通过代码进行详细说明,实现的QT版本是 4.8.7, QT += webkit。完整代码中包含启动html调试窗口的方法。 QT中调用JS函数 // 调用js中的无参无返回值,名为QtCallNoParam的函数 ui->qwebView ->page()->mainFrame()->evaluateJavaScript(QString("QtCallNoParam()")); // 调用js中的有两

宁静致远的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Node.js中运行JavaScript代码

最近学习JS的内容,有幸得到Bill的指点,之前自己运行JS的脚本是在浏览器上,之后惊喜的发现,可以在加载Node.js环境中,在命令窗口运行脚本。这样做的好处是什么呢?大大的减少了窗口来回切换的的频率,提高我们的效率。看起来也是很高大上的。

No body But u 8228

JavaScript 前端枚举库 js-enumerate

前端枚举类Enum对象可在JavaScript中使用,用于枚举定义,前端组件单选、多选等的options选项的定义。

带着Bug看世界 2609

Next.js, Node.js, JavaScript, TypeScript 的关系

【代码】Next.js, Node.js, JavaScript, TypeScript 的关系。

坚持输出,记录成长。 1756

初识JavaScript——JS

目录 1.认识JS 1.1JavaScript是什么 1.2JS的作用 1.3 HTML/CSS/JS的关系 1.4 浏览器执行JS 1.5JS的组成 1.6JS书写位置 1.7JS注释 1.8JS输入输出语句 2.变量 2.1变量的理解和储存 2.2变量的使用 2.3变量语法拓展 2.4声明变量的特殊情况 2.5变量的命名规范 1.认识JS 1.1JavaScript是什么 1.JS是一种 运行在客户端的脚本语言。 2.脚本语言不需要编译,在运行过程中有J.

孙宇航的博客 3072

JavaScript和Node.js的关系

JavaScript和Node.js的联系与区别。

cnds123的专栏 4538

【JavaScript】JS语法入门到实战

Javascript语法的基本讲解。

大三小白C++进阶之路 2610

javascript(js)中使用BigDecimal

了解了java中使用BigDecimal之后改在javascript上使用BigDecimal javascript上使用BigDecimal 与java中使用还是有很大区别的 定义BigDecimal类型 var x = new BigDecimal(); 此时的 x相当于一个空的BigDecimal类型的数据 将数据改为BigDecimal类型 如修改 var x = 1; 相当于将x的值重新定义在赋值给x x = new BigDecimal(""+x); 多加注意 new BigDecim

xiaojiakun的博客 1万+

Node.js 是什么?Node.js与JavaScript的区别是什么?

node.js是什么?Node.js是一个Javascript运行环境(runtime)。Node.js与JavaScript的区别是什么?本质:     Javascript是一种web前端语言,主要用于web开发中,由浏览器解析执行     Node.js是一个可以快速构建网络服务及应用的平台,是用Javascri...

吴甜甜的技术博客 3万+

node.js和JavaScript的关系

1. 什么是node.js node.js是一个基于 Chrome V8 引擎的 JavaScript 运行时的环境。 2. 什么是JavaScript 2.1比较JavaScript 和 Java 两者之间没有关系 V8是google开源的JavaScript引擎,用于执行JavaScript;类似JVM执行java字节码。在node.js 诞生之前,V8是内置于Chromeium中的,现在也...

weixin_41160054的博客 5550
上一篇: 【数据结构】——图
下一篇: Java阶段七:容器集合
South.return
博客等级 码龄6年 1879粉丝 87原创
评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

South.return

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值