JavaScript 中 void(0) 的含义(zz)

本文详细解释了JavaScript中void操作符的用途,尤其是在超链接中的应用。void(0)可以使超链接变为无效链接,避免执行默认的动作。此外,还介绍了如何结合void与其他JavaScript表达式来实现特定的功能。

今天看到《AJAX开发简略》中所有的<A href>都用到了javascript:void(0)

今天看了一下原来这个表达式的作用就是让当前这个超链接成为一个死链接,就是什么都不作。

以下摘自:

http://blog.youkuaiyun.com/mouyong/archive/2007/01/24/1491761.aspx

别人些的JavaScript脚本可以看到这样的代码:

<a href="javascript:doTest2();void(0);">here</a>

但这儿的void(0)究竟是何含义呢?

JavaScript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。

void 操作符用法格式如下:

1. javascript:void (expression)

2. javascript:void expression

expression 是一个要计算的 JavaScript 标准的表达式。表达式外侧的圆括号是可选的,但是写上去是一个好习惯。

你可以使用 void 操作符指定超级链接。表达式会被计算但是不会在当前文档处装入任何内容。

下面的代码创建了一个超级链接,当用户点击以后不会发生任何事。当用户点击链接时,void(0) 计算为 0,但在 JavaScript 上没有任何效果。

<A HREF= "javascript:void(0)">单击此处什么也不会发生</A>

下面的代码创建了一个超级链接,用户单击时会提交表单。

<A HREF= "javascript:void(document.form.submit())">单击此处提交表单</A>

以下转自:

http://www.cnblogs.com/xiang/archive/2006/09/05/495828.html

#包含了一个位置信息默认的锚点是#top 也就是网页的上端,而javascript:void(0) 仅仅表示一个死链接.这就是为什么有的时候页面很长浏览链接明明是#可是跳动到了页首,而javascript:void(0) 则不是如此所以调用脚本的时候最好用void(0),或者<input onclick><div onclick>等.

以下摘自:

http://bbs.blueidea.com/thread-2694666-1-1.html

void 运算符
避免表达式返回值。

void expression

expression 参数是任意有效的 JScript 表达式。

说明
void 运算符对表达式求值,并返回 undefined。在希望求表达式的值,但又不希望脚本的剩余部分看见这个结果时,该运算符最有用。

"use strict"; (window["@ecom-mcenter/ffa-goods:1.0.0.9056"] = window["@ecom-mcenter/ffa-goods:1.0.0.9056"] || []).push([[7805], { 5001: function(n, r, e) { var t = e(46230) , o = e(77817) , u = e(39155) , i = e(61672) , c = e(12553) , a = e(18813) , l = e(20675) , s = e(46804) , f = e(17654) , d = e(86864) , v = e(61500) , h = "price" , p = function(n) { return !1 !== n.skuForm.n("sku_status").state.value } , m = (0, o.default)(function(n) { n.triggerActionById("suggest_price_calc_for_price") }, 1e3, { leading: !0 }) , g = function(n, r) { if (r && n) { var e = Number(r) , t = Number(n); return 0 === t ? a.zz.WithoutPrice : t <= e ? a.zz.Low : a.zz.High } return r ? a.zz.WithoutPrice : a.zz.WithoutSuggestedPrice }; r.A = function() { var n, r = (0, i.A)(), e = (0, c.ox)(), _ = (0, c.bI)(), k = (0, u.useRef)(!1), y = (0, u.useRef)(!1), z = e.nodeArray("sku_detail"), w = (0, f.qV)(), A = (0, s.p)(z).price_power_suggest_info || {}, b = A.profit_tags, E = A.hit_cate_clues, S = A.price_suggest_strategy, x = (0, u.useRef)(new Array(w.length).fill(void 0)), W = (0, d.io)(); return (0, u.useEffect)(function() { var n = (0, o.default)(function() { var n, o = !0, u = a.zz.WithoutSuggestedPrice, i = (0, t.A)((0, t.A)((0, t.A)((0, t.A)({}, a.zz.WithoutSuggestedPrice, 0), a.zz.WithoutPrice, 0), a.zz.Low, 0), a.zz.High, 0), c = W(); w.forEach(function(n, r) { var t = n.node(h) , u = (n.na("spec_detail_ids").state.value || []).map(function(n) { var r, e = n ? null === (r = c[n]) || void 0 === r || null === (r = r.state) || void 0 === r ? void 0 : r.value : void 0; return "".concat(null == e ? void 0 : e.name).concat(null != e && e.remark ? "\uff08".concat(null == e ? void 0 : e.remark, "\uff09") : "") }).join("/") , s = (0, l.V)({ skuForm: n, schemaGoodsForm: e }) , f = t.state.value || "0"; f && 0 !== Number(f) || (o = !1); var d = p({ skuForm: n }) , v = n.n("id").state.value || "" , m = !1 === d ? a.zz.WithoutSuggestedPrice : g(f, s); i[m]++, x.current[r] = { id: v, price: f, name: u, suggest_info: { suggest_max_price: s }, skuStatus: d } }), u = w.length === i[a.zz.WithoutSuggestedPrice] ? a.zz.WithoutSuggestedPrice : i[a.zz.Low] + i[a.zz.WithoutSuggestedPrice] === w.length ? a.zz.Low : i[a.zz.High] > 0 ? a.zz.High : a.zz.WithoutPrice, z.setExtra(function() { return { price_power_level: u } }, "\u5b58\u50a8\u5546\u54c1\u6574\u4f53\u7684\u7684\u4ef7\u683c\u529b\u7b49\u7ea7"), u === a.zz.High && 1 === (null == z || null === (n = z.extra) || void 0 === n || null === (n = n.additions) || void 0 === n || null === (n = n.price_power_suggest_info) || void 0 === n ? void 0 : n.price_suggest_strategy) && (k.current = !0), o && y.current && (y.current = !1, _.triggerActionById("suggest_price_calc_for_price")), r() }, 1e3); x.current = new Array(w.length).fill(void 0), null != w && w.length || r(); var u = [] , i = e.na("spec_detail"); return u.push(i.watchState("value", function() { m(_), n() })), w.forEach(function(r, t) { var o = r.node(h); u.push((0, v.w)(function() { var n = (0, l.V)({ skuForm: r, schemaGoodsForm: e }) , t = p({ skuForm: r }); try { return JSON.stringify({ id: r.n("id").state.value, price: o.state.value, suggestedPrice: n, skuStatus: t }) } catch (u) { return "{}" } }, function(r, e) { try { JSON.parse(r).price !== JSON.parse(e || "{}").price && (y.current = !0) } catch (t) {} n() }, { deep: !1, immediate: !0 })) }), function() { u.forEach(function(n) { return n() }) } }, [w.length, null === (n = w[0]) || void 0 === n ? void 0 : n.uuid]), { skus: x.current, profit_tags: b, price_suggest_strategy: S, hit_cate_clues: E, isLowPriceZoneTractionStarted: k.current } } }, 17654: function(n, r, e) { e.d(r, { Nb: function() { return a }, qV: function() { return s }, zr: function() { return l } }); var t = e(39155) , o = e(77986) , u = e(76718) , i = e(12553) , c = { form: null, stopWatch: function() {}, callbacks: new Set } , a = function() { var n; null === (n = c.stopWatch) || void 0 === n || n.call(c) } , l = function(n, r) { var e, t; null === (e = c.stopWatch) || void 0 === e || e.call(c), n && (c.form = n), r && c.callbacks.add(r); if (c.stopWatch = null === (t = c.form) || void 0 === t ? void 0 : t.watchChildren(function(n) { c.callbacks.forEach(function(r) { null == r || r(n) }) }), r) { var o; r(null === (o = c.form) || void 0 === o ? void 0 : o.children) } else { var u, i = null === (u = c.form) || void 0 === u ? void 0 : u.children; c.callbacks.forEach(function(n) { n(i) }) } return r ? function() { var n; (c.callbacks.delete(r), 0 === c.callbacks.size) && (null === (n = c.stopWatch) || void 0 === n || n.call(c)) } : c.stopWatch || function() {} } , s = function() { var n = (0, i.ox)().na("sku_detail") , r = (0, o.CH)() , e = (0, t.useRef)(u.Ml); return e.current = (0, o.U5)(function() { return n.children }, []), (0, t.useEffect)(function() { return l(n, function(n) { e.current = null == n ? void 0 : n.filter(Boolean), r() }) }, []), e.current } }, 17685: function(n, r, e) { var t = e(63512) , o = (e(86111), e(26993)) , u = e(39155) , i = e(99445) , c = e(18577) , a = e(61084) , l = e(61547) , s = e(33073) , f = function(n) { var r = n.render , e = n.componentName , t = n.error; return (0, u.useEffect)(function() { var n; null === (n = (0, i.iE)()) || void 0 === n || n.sendMeraCustom("load_vmok_error", { is_error: "1", error: (null == t ? void 0 : t.message) || JSON.stringify(t) || "unknown", componentName: e || "unknown" }), o.Ay.error("\u6a21\u5757\u52a0\u8f7d\u5931\u8d25\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u540e\u91cd\u8bd5"), (0, l.z)({ type: "load_vmok_error", message: (null == t ? void 0 : t.message) || JSON.stringify(t) || "unknown" }) }, []), (0, u.useMemo)(function() { return (null == r ? void 0 : r()) || null }, [r]) }; r.A = function(n) { var r = n.loader , e = n.loading , o = n.errorFallbackRender , i = n.componentName , l = (0, u.lazy)(function() { return (0, a.A)(function() { return r() }).then(function(n) { var r, e = n.default; return "function" == typeof (r = e) || "object" == typeof r && "function" == typeof r.render ? n : { default: function() { return (0, s.jsx)(f, { componentName: i, error: new Error("\u6a21\u5757\u975e\u7ec4\u4ef6\u7c7b\u578b"), render: o }) } } }, function(n) { return { default: function() { return (0, s.jsx)(f, { componentName: i, error: n, render: o }) } } }) }); return (0, u.forwardRef)(function(n, r) { return (0, s.jsx)(c.tH, { fallbackRender: function(n) { var r = n.error; return (0, s.jsx)(f, { componentName: i, error: r, render: o }) }, children: (0, s.jsx)(u.Suspense, { fallback: e || null, children: (0, s.jsx)(l, (0, t.A)((0, t.A)({}, n), {}, { ref: r })) }) }) }) } }, 18577: function(n, r, e) { e.d(r, { tH: function() { return h } }); var t = e(63512) , o = e(5356) , u = e(57490) , i = e(64501) , c = e(77060) , a = e(46230) , l = e(39155) , s = e(99445) , f = e(97851) , d = e(33073) , v = { error: null } , h = function(n) { function r() { var n; (0, o.A)(this, r); for (var e = arguments.length, t = new Array(e), u = 0; u < e; u++) t[u] = arguments[u]; return n = (0, i.A)(this, r, [].concat(t)), (0, a.A)(n, "state", v), (0, a.A)(n, "resetErrorBoundary", function() { for (var r, e, t = arguments.length, o = new Array(t), u = 0; u < t; u++) o[u] = arguments[u]; null === (r = (e = n.props).onReset) || void 0 === r || r.call.apply(r, [e].concat(o)), n.reset() }), n } return (0, c.A)(r, n), (0, u.A)(r, [{ key: "reset", value: function() { this.setState(v) } }, { key: "componentDidCatch", value: function(n, r) { var e, t, o, u, i, c = new f.v(n.message,n.stack); null === (e = (0, s.iE)()) || void 0 === e || e.captureException(c, "render_error"), null === (t = (0, s.iE)()) || void 0 === t || t.sendMeraCustom("render_error", { error_name: n.name, error_msg: n.message, error_stack: n.stack || "", react_error_info: r.componentStack || "" }); var a = { stack: (null == n ? void 0 : n.stack) || "no stack", name: null == n ? void 0 : n.name, message: null == n ? void 0 : n.message, componentStack: r.componentStack || "" }; null === (o = (0, s.iE)()) || void 0 === o || o.sendCounter("boundary_error", 1, a), null === (u = (i = this.props).onError) || void 0 === u || u.call(i, n, r) } }, { key: "componentDidUpdate", value: function(n, r) { var e, t, o = this.state.error, u = this.props.resetKeys; null !== o && null !== r.error && function() { var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [] , r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : []; return n.length !== r.length || n.some(function(n, e) { return !Object.is(n, r[e]) }) }(n.resetKeys, u) && (null === (e = (t = this.props).onResetKeysChange) || void 0 === e || e.call(t, n.resetKeys, u), this.reset()) } }, { key: "render", value: function() { var n = this.state.error , r = this.props , e = r.fallbackRender , o = r.FallbackComponent , u = r.fallback; if (null !== n) { var i = { error: n, resetErrorBoundary: this.resetErrorBoundary }; if (l.isValidElement(u)) return u; if ("function" == typeof e) return e(i); if (o) return (0, d.jsx)(o, (0, t.A)({}, i)); throw new Error("react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop") } return this.props.children } }], [{ key: "getDerivedStateFromError", value: function(n) { return { error: n } } }]) }(l.Component) }, 18813: function(n, r, e) { e.d(r, { Ku: function() { return f }, Y1: function() { return l }, ZV: function() { return i }, b$: function() { return a }, bu: function() { return s }, qr: function() { return c }, zz: function() { return u } }); var t = e(46230) , o = e(36748) , u = function(n) { return n[n.Low = 2] = "Low", n[n.High = 1] = "High", n[n.WithoutSuggestedPrice = 0] = "WithoutSuggestedPrice", n[n.WithoutPrice = -1] = "WithoutPrice", n }({}) , i = function(n) { return n[n["\u8de8\u5883\u666e\u901a\u8d27\u54c1"] = 0] = "\u8de8\u5883\u666e\u901a\u8d27\u54c1", n[n["\u7c7b\u81ea\u8425\u8d27\u54c1"] = 4] = "\u7c7b\u81ea\u8425\u8d27\u54c1", n }({}) , c = function(n) { return n[n.normal = 0] = "normal", n[n.expensive = 1] = "expensive", n[n.awkward = 2] = "awkward", n[n.both = 3] = "both", n[n.abnormal = 4] = "abnormal", n }({}) , a = (0, t.A)((0, t.A)((0, t.A)({}, o.Yo.CrossBorderImport, "\u8de8\u5883\u8fdb\u53e3"), o.Yo.DutyPaidDamao, "\u56fd\u5185\u73b0\u8d27-\u5927\u8d38"), o.Yo.DutyPaidHainan, "\u56fd\u5185\u73b0\u8d27-\u6d77\u5357") , l = function(n) { return n[n["\u4f9b\u5e94\u94fe\u670d\u52a1\u5e73\u53f0"] = 1] = "\u4f9b\u5e94\u94fe\u670d\u52a1\u5e73\u53f0", n[n["\u4e91\u4ed3"] = 2] = "\u4e91\u4ed3", n[n["\u8d38\u6613"] = 5] = "\u8d38\u6613", n[n["\u975e\u5185\u90e8\u5c65\u7ea6\u4e91\u4ed3"] = 6] = "\u975e\u5185\u90e8\u5c65\u7ea6\u4e91\u4ed3", n }({}) , s = (0, t.A)((0, t.A)((0, t.A)({}, l.\u4f9b\u5e94\u94fe\u670d\u52a1\u5e73\u53f0, "\u4f9b\u9500\u5e73\u53f0\u8d27\u54c1"), l.\u4e91\u4ed3, "\u4e91\u4ed3\u8d27\u54c1"), l.\u975e\u5185\u90e8\u5c65\u7ea6\u4e91\u4ed3, "\u4e91\u4ed3\u8d27\u54c1") , f = function(n) { return n === l.\u4e91\u4ed3 || n === l.\u975e\u5185\u90e8\u5c65\u7ea6\u4e91\u4ed3 } }, 20675: function(n, r, e) { e.d(r, { V: function() { return t } }); var t = function(n) { var r, e, t = n.skuForm, o = ((null === (r = n.schemaGoodsForm.na("sku_detail").extraRef) || void 0 === r || null === (r = r.value) || void 0 === r ? void 0 : r.additions) || {}).price_power_suggest_info, u = void 0 === o ? {} : o, i = u.suggest_max_price, c = u.records_schema_map, a = t.n("id").state.value || ""; return (null == c || null === (e = c[a]) || void 0 === e || null === (e = e.additions) || void 0 === e ? void 0 : e.suggest_max_price) || 0 || i } }, 33847: function(n, r, e) { e.d(r, { l: function() { return i } }); var t = e(5356) , o = e(57490) , u = e(46230) , i = function() { return (0, o.A)(function n() { (0, t.A)(this, n), (0, u.A)(this, "cache", null) }, [{ key: "get", value: function() { return this.cache } }, { key: "set", value: function(n) { var r = this; this.cache = n, Promise.resolve().then(function() { r.cache = null }) } }]) }() }, 36748: function(n, r, e) { e.d(r, { Li: function() { return l }, Yo: function() { return o }, fi: function() { return c }, i7: function() { return a }, mb: function() { return i }, sQ: function() { return u } }); var t = e(46230) , o = function(n) { return n[n.CrossBorderImport = 1] = "CrossBorderImport", n[n.DutyPaidDamao = 2] = "DutyPaidDamao", n[n.DutyPaidHainan = 3] = "DutyPaidHainan", n }({}) , u = function(n) { return n[n["\u65e0\u6548"] = 0] = "\u65e0\u6548", n[n["\u6709\u6548"] = 1] = "\u6709\u6548", n }({}) , i = function(n) { return n[n["\u672a\u7ea0\u9519"] = 0] = "\u672a\u7ea0\u9519", n[n["\u5df2\u7ea0\u9519"] = 1] = "\u5df2\u7ea0\u9519", n }({}) , c = function(n) { return n[n["\u4e0d\u542f\u7528"] = 0] = "\u4e0d\u542f\u7528", n[n["\u542f\u7528"] = 1] = "\u542f\u7528", n }({}) , a = function(n) { return n["\u76f8\u5bf9\u65f6\u95f4"] = "1", n["\u7edd\u5bf9\u65f6\u95f4"] = "2", n }({}) , l = ((0, t.A)((0, t.A)({}, a.\u76f8\u5bf9\u65f6\u95f4, "relative"), a.\u7edd\u5bf9\u65f6\u95f4, "absolute"), function(n) { return n[n["\u666e\u901a\u5e93\u5b58"] = 0] = "\u666e\u901a\u5e93\u5b58", n[n["\u533a\u57df\u5e93\u5b58"] = 1] = "\u533a\u57df\u5e93\u5b58", n[n["\u9636\u68af\u5e93\u5b58"] = 10] = "\u9636\u68af\u5e93\u5b58", n }({})) }, 61547: function(n, r, e) { e.d(r, { z: function() { return u } }); var t = e(48873) , o = {} , u = function(n) { var r = n.type , e = n.message; try { var u; o.current || (o.current = (0, t.Dt)("dynamic_recording_config")); var i, c, a = (o.current || {}).fe_record; if (null != a && a.open && r === a.type && (!a.message || (null === (u = e || "") || void 0 === u ? void 0 : u.indexOf(a.message)) > -1)) console.log("fe_record", a), null === (i = window) || void 0 === i || null === (i = i.sifDataLayer) || void 0 === i || null === (c = i.push) || void 0 === c || c.call(i, { event: "sif-custom.goods-custom-record" }) } catch (l) {} } }, 65852: function(n, r, e) { e.d(r, { p8: function() { return a }, qh: function() { return s }, t$: function() { return l } }); var t = e(39155) , o = e(77986) , u = e(76718) , i = e(12553) , c = { form: null, stopWatch: function() {}, callbacks: new Set } , a = function() { var n; null === (n = c.stopWatch) || void 0 === n || n.call(c) } , l = function(n, r) { var e, t; null === (e = c.stopWatch) || void 0 === e || e.call(c), n && (c.form = n), r && c.callbacks.add(r); if (c.stopWatch = null === (t = c.form) || void 0 === t ? void 0 : t.watchChildren(function(n) { c.callbacks.forEach(function(r) { null == r || r(n) }) }), r) { var o; r(null === (o = c.form) || void 0 === o ? void 0 : o.children) } else { var u, i = null === (u = c.form) || void 0 === u ? void 0 : u.children; c.callbacks.forEach(function(n) { n(i) }) } return r ? function() { var n; (c.callbacks.delete(r), 0 === c.callbacks.size) && (null === (n = c.stopWatch) || void 0 === n || n.call(c)) } : c.stopWatch || function() {} } , s = function() { var n = (0, i.ox)().na("spec_detail") , r = (0, o.CH)() , e = (0, t.useRef)(u.Ml); return e.current = (0, o.U5)(function() { return n.children }, []), (0, t.useEffect)(function() { return l(n, function(n) { e.current = null == n ? void 0 : n.filter(Boolean), r() }) }, []), e.current } }, 86864: function(n, r, e) { e.d(r, { EN: function() { return y }, K$: function() { return g }, UM: function() { return p }, _j: function() { return v }, io: function() { return k }, le: function() { return d }, oi: function() { return h }, q4: function() { return f } }); var t = e(39473) , o = e(39155) , u = e(12553) , i = e(65852) , c = e(95384) , a = e(76718) , l = e(33847) , s = e(18261) , f = function(n, r) { var e = (0, u.ox)().nodeArray("spec_detail") , t = (0, s.kU)(n); (0, o.useEffect)(function() { var n = [] , o = function(r) { n.forEach(function(n) { return n() }), n.splice(0, n.length), r.forEach(function(r) { n.push(r.nodeArray("spec_values").watchChildren(t), r.node("name").watchState("value", t), r.node("is_default").watchState("value", t), r.node("is_time_spec").watchState("value", t)) }) } , u = (0, i.t$)(e, function(n) { t(), o(n) }); return o(e.children), r && t(), function() { u(), n.forEach(function(n) { return n() }) } }, []) } , d = function(n, r) { var e = (0, u.ox)().nodeArray("spec_detail") , t = (0, s.kU)(n); (0, o.useEffect)(function() { var n = [] , o = function(r) { n.forEach(function(n) { return n() }), n.splice(0, n.length), r.forEach(function(r) { n.push(r.nodeArray("spec_values").watchState("value", t)) }) } , u = (0, i.t$)(e, function(n) { t(), o(n) }); return o(e.children), r && t(), function() { u(), n.forEach(function(n) { return n() }) } }, []) } , v = function() { var n = (0, u.ox)() , r = (0, o.useState)(0) , e = (0, t.A)(r, 2) , i = e[0] , a = e[1]; f(function() { return a(function(n) { return ++n }) }); var l = (0, c.O5)(); return (0, o.useMemo)(function() { var r = n.nodeArray("spec_detail").state.value; return (null == r ? void 0 : r.filter(function(n) { var r; return null == n || null === (r = n.spec_values) || void 0 === r ? void 0 : r.length })) || [] }, [i, l]) } , h = function() { var n = (0, u.ox)(); return function() { var r = n.nodeArray("spec_detail").state.value; return (null == r ? void 0 : r.filter(function(n) { var r; return !n.is_default && (null === (r = n.spec_values) || void 0 === r ? void 0 : r.length) })) || a.Ml } } , p = function(n) { var r = {} , e = {} , t = {}; return null == n || n.forEach(function(n) { var o; r[n.id] = n, null === (o = n.spec_values) || void 0 === o || o.forEach(function(r) { e[r.id] = r, t[r.id] = n }) }), { specNameMap: r, specValueMap: e, specValueNameMap: t } } , m = new l.l , g = function() { var n = (0, u.ox)(); return function() { var r = n.nodeArray("spec_detail") , e = m.get(); return e || (e = p(r.state.value), m.set(e)), e } } , _ = new l.l , k = function() { var n = (0, u.ox)(); return function() { var r = n.nodeArray("spec_detail") , e = _.get(); return e || (e = r.children.reduce(function(n, r) { return r.na("spec_values").children.forEach(function(r) { var e = (r.state.value || {}).id; e && (n[e] = r) }), n }, {}), _.set(e)), e } } , y = function() { var n = (0, u.ox)(); return function() { var r = n.nodeArray("spec_detail").children.reduce(function(n, r) { var e; return null === (e = r.extra) || void 0 === e || null === (e = e.additions) || void 0 === e || null === (e = e.measure_templates) || void 0 === e || e.forEach(function(r) { n[r.template_id] = r }), n }, {}) || a.t0; return { templateMap: r, hasMeasureSpec: Object.keys(r).length > 0 } } } } }]); 请帮我分析这段代码中,spec_detail_ids的生成过程
最新发布
09-01
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值