javascript中var与let与const的区别

详解 var、let、const之间的区别? var:函数作用域、可变、提升,现代 JavaScript 中不推荐使用。let:块级作用域、可变,适用于需要改变的变量。const:块级作用域、不可变,适用于不需要改变的变量,尤其是对象和数组时,常用于提高代码可维护性。优先使用const,只有在明确需要修改变量时使用let。避免使用var,尤其是在现代 JavaScript 开发中,let和const提供了更清晰的变量管理方式。 阅读详情

转自:https://blog.youkuaiyun.com/lq15310444798/article/details/78405252

var与let的区别
到ES6的时候,javascript中声明变量的方式有三种var、let、const

1:作用域只是局限于当前代码块


        {
            var str = "aaa";
            console.log(str);//aaa
            let str1 = "dddd";
            console.log(str1);//dddd
        }
        console.log(str);//aaa
        console.log(str1);//报错,str1 is not defined
上面代码中采用var 和 let 分别申明了变量,采用var 申明的变量在外面可已使用,但采用let申明的变量只能在当前代码块中使用,在外边是用不了。


2:使用let 申明的变量作用域不会提升,而采用var申明的会作用域提升。

采用var申明变量


        //采用var 申明的变量作用域会提升
        {
            console.log(a);//输出undefined
            var a = "dd";
        }
上面的代码经过作用域提升之后相当于下面的代码

        //作用域声明提升总是会将变量的申明提升到当前作用域的最前面,如下所示
        {
            var a;
            console.log(a);//因此输出为undefined
            a = "ddd";
        }
采用let申明的变量作用域不会提升,因此下面代码将会报错

        {
            console.log(b);//这里将会报错,因为b没有申请
            let b = "SYC";
        }

3:采用let在相同的作用于下面不能申明相同的变量,采用var申明相同的变量后面会覆盖当前作用域前面的
4:for循环体现父子作用域

例子:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
    <script>
       var btns = document.getElementsByTagName('button');
       for(i var i = 0; i < btns.length; i ++){
            btns[i].onclick = function(){
                alert("按钮"+i);//这里一直是按钮4
            }
       }
    </script>
</body>
</html>

【JS中var,let,const区别】 : / : 2. 变量提升 : / : 3. 重复声明 : / : 4. 修改值 : 基本类型(如 、)不可修改。 引用类型(如 、)可修改属性,但不能重新赋值。 三、使用建议 优先使用 : 适用于不会重新赋值的变量(如配置、常量)。 其次使用 : 适用于需要重新赋值的变量(如循环计数器)。 避免使用 : 除非在旧代码或特殊场景(如全局变量)。 四、经典问题示例 原因: 的 是全局共享的,而 的 是块级作用域,每次循环都是新的 阅读详情

相关推荐

JavaScript 中 let 与 var 的区别及 const 定义常量详解

本文主要介绍了 JavaScript 中 let 与 var 的区别,包括作用域、重复声明、预处理及变量收集等方面差异,还阐述了 let 在块级作用域有效等特性。同时介绍了 const 定义常量的内容,为理解和运用这些关键字提供了详细指导。

前端基地 1210

let、const、var的区别

一、let、const、var的区别 (1)块级作用域: 块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。块级作用域解决了ES5中的两个问题: 内层变量可能覆盖外层变量 用来计数的循环变量泄露为全局变量 (2)变量提升: var存在变量提升,let和const不存在变量提升,即在变量只能在声明之后使用,否在会报错。 (3)给全局添加属性: 浏览器的全局对象是window,Node的全局对象是global。var声明的变量为全局变量,并且会将该变量添加为全局对象的..

顺其自然~专栏 2万+

JavaScript:var、let和const的区别

JavaScript变量声明方式对比摘要: JavaScript中有多种变量声明方式,主要分为传统方式(var)和ES6新增方式(let/const)。var具有函数作用域和变量提升特性,允许重复声明;let和const具有块级作用域和暂时性死区特性,let允许重新赋值而const不允许。此外还有全局变量声明(不推荐)、函数参数声明、function/class声明、import/export声明等多种方式。最佳实践建议优先使用const,需要重新赋值时用let,避免使用var和无关键字声明。不同声明方式在

搬砖人的博客 991

一分钟让你简单理解let const var 的区别

let 和 const 是ES6中新增的语法,这三个关键字都是用于声明变量的,但是他们又有各自的区别。

qq_63176997的博客 2476

JavaScript 中 var、let 和 const 的区别与使用场景

/ 输出0,1,2。在现代JavaScript开发中,推荐优先使用const,其次是let,尽量避免使用var。// 不会成为window.z。// 不会成为window.y。// 成为window.x。var x = 2;:函数作用域(function-scoped):存在暂时性死区(TDZ),声明前访问会报错。:块级作用域(block-scoped)

Auscy的博客 962

ComfyUI的G-Dino模型加载器报错解决方案:从崩溃到重生

遇到G-Dino模型加载器报错不要慌,按照本文的步骤操作,99%的问题都能解决。模型文件正确下载到指定位置segment_anything节点安装完整且无冲突需要补充更多细节或故障排除方法吗?可以随时告诉我。

2301_78150483的博客 4024

let、const和var的区别是什么?

特性varletconst作用域函数作用域块作用域块作用域提升是,值为undefined是,暂时性死区是,暂时性死区重新赋值允许允许不允许重复声明允许不允许不允许全局变量成为全局对象的属性不会成为全局对象的属性不会成为全局对象的属性。

祈澈菇凉 1234

别再手动算频谱了!用这个在线FFT工具,5分钟搞定JSON/CSV数据分析

本文介绍了一款高效的在线FFT工具,帮助用户快速分析JSON/CSV格式的时域数据,5分钟内完成频谱分析。通过傅里叶变换(FFT)算法,大幅提升计算效率,解决传统手动计算的痛点,适用于工业振动分析、设备故障诊断等场景。

weixin_29172201的博客 262

Js中var,let,const的区别

一:区别: 1、var声明的变量属于函数作用域,而let和const声明的变量属于块级作用域;(js作用域在上篇文章) 2、var声明的变量存在变量提升,而let和const没有 3、var声明的变量可以重复声明,而在同一块级作用域,let变量不能重新声明,const常量不能修改(对象的属性和方法,数组的内容可以修改) 二:var声明的作用域 1. 使用var声明的变量,这个变量属于当前的函数作用域,如果变量的声明在任何函数外,那么这个变量就属于全局作用域 var a = 1; //..

前端与计算机相关知识的分享,博主的qq523235674 1万+

Zemax热分析实战:5分钟搞定双胶合透镜温度漂移优化(附操作数详解)

本文详细解析了使用Zemax进行光学系统热分析的全流程,以双胶合透镜为例,重点阐述了如何通过多重结构编辑器模拟温度变化,并利用关键操作数优化系统以抵抗温度漂移。文章提供了从基础设置到高级优化的实战技巧,帮助工程师快速掌握无热化设计方法,确保系统在宽温范围内保持稳定成像性能。

n4o5p6q7r的博客 399

华大HC32F460从零到200MHz:手把手教你配置时钟系统(附避坑指南)

本文详细解析了华大HC32F460 MCU的时钟系统配置,从启动过程、时钟树分析到实战配置200MHz系统时钟。文章手把手指导开发者如何正确配置外部晶振、MPLL锁相环及总线分频,并提供了硬件检查、代码解读及常见问题排查的避坑指南,帮助用户从零构建稳定可靠的高性能时钟环境。

net55的博客 297

JavaScript中var、let、const的区别 (详解)

参加了几场前端方向的校招笔试面试,发现考察var、let、const的区别及用法还是较为频繁的,所以今天在这里总结一下,巩固知识点。 在Javascript中,var、let、const都可用于变量声明。但是之前没有梳理过它们之间的区别,本文主要通过介绍var、let、const的作用域、用途和变量提升,以此来发现它们的不同之处。 JavaScript中var、let、const的区别varvar的作用域var的变量提升letlet的作用域三级目录 var 在ES6 之前,都是使用var声明变量的。let

m0_50694272的博客 3221

Comsol 弧形声学换能器声聚焦仿真

1. 弧度和曲率半径:弧形声学换能器的形状和曲率半径对声聚焦效果有重要影响。通常,较小的曲率半径和较大的弧度可以实现更强的声聚焦效果。弧形声学换能器声聚焦是指将声波能量集中在弧形声学换能器的特定区域内,以实现更强的声场强度和分辨率。4. 数值仿真和优化:使用声学仿真软件进行数值仿真可以帮助设计和优化弧形声学换能器的声聚焦效果。通过调整几何参数、材料特性和激励信号等参数,可以模拟和优化声聚焦效果。2. 激励信号:通过调整激励信号的频率和幅值,可以实现声波在弧形声学换能器中的聚焦效果。

声学黑洞仿真工作室 1618

js中const,var,let区别与用法

今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章。主要内容是:js中三种定义变量的方式const, var, let的区别。1.const定义的变量不可以修改,而且必须初始化。1 const b = 2;//正确 2 // const b;//错误,必须初始化 3 console.log('函数外const定义b:' + b);//有输出值 4 // b = 5; 5 // co...

JHLIN的博客 11万+

微信小程序利用Echarts加载中国地图的步骤

微信小程序如何利用Echarts加载地图?可按照如下四个步骤进行。(阅读时间大概3分钟)。

成都都成 5279

iOS中.obj、.usdz、.dae和.scn格式之间的转化(思路清晰版)

作者最近在写项目的过程中遇到了一些3d模型格式问题,故写下这篇文章记录一下解决问题的过程。

yueliangmua的博客 5586

js中的var,let,const 的区别

1. var声明作用域使用var在一个函数内部定义一个变量,就意味着该变量将在函数退出时被销毁:2. 声明提升 ,也就是把所有变量声明都拉倒函数作用域的订单,此外,使用var声明同一个变量也没有问题;1.let 跟var 的作用差不多,最明显的区别是,let声明的范围是块作用域,而var声明的范围是函数作用域2. let 也不允许同一个块作用域出现冗余声明3. let 有暂时性死区 就是let声明的变量不会在作用域中被提升。

m0_63472757的博客 1519

基于物联网设计温室水培系统(NBIOT+华为云IOT)_338

本项目设计并实现了一套基于物联网的温室水培系统。系统以STM32F103RCT6单片机为核心控制器,结合SHT30温湿度传感器、SGP30二氧化碳传感器、BH1750光照传感器及液位检测传感器等硬件,实现对温室内环境参数的实时采集。系统支持自动和手动两种控制模式,能够根据传感器数据自动控制补光灯、通风风扇、遮光卷帘、降温水帘及营养液补充电机。通过NBIoT模块,系统可将采集的数据通过MQTT协议上传至华为云IOT平台,用户可通过Android手机APP或Windows上位机进行远程监控与控制。

414

js的 var let const 的区别

js的 var let const 的区别

suk_java的博客 784

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

js中let,var和const的区别

在javascript中有三种声明变量的方式:var、let、const。 var var声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用。 var定义的变量可以修改,如果不初始化会输出undefined,不会报错。 var a = 1; // var a;//不会报错 console.log('函数外var定义a:' + a);//可以输出a=1 f...

fightingcoder419的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

js中var,let,const的区别和用法

这里写自定义目录标题js中var,let,const的区别和用法ES5中var的写法ES6中的let和constlet的用法const的用法 js中var,let,const的区别和用法 在ES6出来之后,js中添加了会级作用域这是在原来的ES5中没有的,同样也就衍生出let和const两种新的变量的声明的方式。 ES5中var的写法 function add(num1, num2){ var sum = num1 + num2; return sum; } var result = add(10, 2

asuasu 5158

JavaScript中var、let和const的区别

一、前言 在ES6(ES2015)出现之前,JavaScript中声明变量就只有通过var关键字,函数声明是通过function关键字,而在ES6之后,声明的方式有var、let、const、function、class,本文主要讨论var、let和const之间的区别。 二、var 如果使用关键字var声明一个变量,那么这个变量就属于当前的函数作用域,如果声明是发生在任何函数外的顶层声明,那么这个变量就属于全局作用域。举例说明: var a = 1; ...

monody666的博客 1974

js 中 var let const的区别 javascript 中 var let const的区别

var 不在函数内 声明的是全局变量 console.log(x); //undefined 未定义 var x = 5; console.log(x); //5 (function(){ console.log(x) //5 } )(); let定义的局部变量变量 且如果在定义之前被引用 会出现报错 console.log(y); // Uncaught ReferenceError: Cannot access 'y' before initialization let y = 3

wangtengfei1121的博客 145

【JavaScript】js中 var、let、const之间的区别你真的理解了吗?

实际上保证的并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。对于复杂类型的数据,变量指向的内存地址,保存的只是一个指向实际数据的指针,,我们能够对一个变量进行多次声明,后面声明的变量会覆盖前面的变量声明。对于简单类型的数据,值就保存在变量指向的那个内存地址,因此等同于常量。不存在变量提升,即它们所声明的变量一定要在声明后使用,否则报错。声明的变量存在变量提升,即变量可以在声明之前调用,值为。声明一个只读的常量,一旦声明,常量的值就不能改变。声明的变量既是全局变量,也是顶层变量。

一个前端开发者 1000

javaScript中var、let、const的区别

在javascript中有三种声明变量的方式:var、let、const。 1、var       之前我们在写js代码的时候都知道可以用var定义全局变量和局部变量,也可以省略var,而且在非严格模式下不会报错,但是实际上在严格模式下,两者的使用有没有区别,可能很多人不清楚。 var x = 1;  y = 2;   console.log(x);//1   console.log

Wendy 8298
上一篇: 1045 Access denied for user 'root'@'localhost' (using password: YES)
下一篇: windows下 mongodb 连接,备份,还原远程服务器上的数据库(在cmd命令窗口实现)
acoolgiser
博客等级 码龄11年 179粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值