async function changeNumber(target) { let param = { url: '/cart/number', argument: { id: localStorage.getItem('userId'), goodsId: target.parentElement.parentElement.dataset.goodsid, // number: --target.nextElementSibling.value } } if (target.className == 'deleteGoods') { param.argument.number = --target.nextElementSibling.value if (param.argument.number == 0) { target.nextElementSibling.value = 1 target.disabled = true return } } if (target.className == 'addGoods') { param.argument.number = target.previousElementSibling.value target.previousElementSibling.previousElementSibling.disabled = false } let res = await ajax_post(param) if (res.code == 1) { this.renderCarList() } } 说说这段代码的问题
时间: 2023-06-09 08:07:38 浏览: 34
这段代码有几个问题:
1. 代码缺少注释,导致可读性差,理解困难。
2. 变量名不够规范,不易理解,例如:param、res、target等。
3. 代码中出现了硬编码,例如: '/cart/number'、localStorage.getItem('userId')等,可以通过配置文件或者常量来解决。
4. 函数代码过长,可以考虑将其拆分成多个小函数实现。
5. 函数名不够准确,不能清楚地表达函数的主要作用,可以通过更改名称来提高其可读性。
6. 在 if (target.className == 'deleteGoods') 语句块中,应该先判断序列值是否合法。如果不合法,则不能执行取值等操作,应该抛出错误或者返回默认值。
7. 函数应该有返回值,以便调用者确定函数执行的情况。但此函数中没有返回值,需要修改代码。
8. ajax_post 函数没有定义,需要先定义或者从其他地方导入该函数。
相关问题
async function changeNumber(target) { let param = { url: '/cart/number', argument: { id: localStorage.getItem('userId'), goodsId: target.parentElement.parentElement.dataset.goodsid, // number: --target.nextElementSibling.value } } if (target.className == 'deleteGoods') { param.argument.number = --target.nextElementSibling.value if (param.argument.number == 0) { target.nextElementSibling.value = 1 target.disabled = true return } } if (target.className == 'addGoods') { param.argument.number = target.previousElementSibling.value target.previousElementSibling.previousElementSibling.disabled = false } let res = await ajax_post(param) if (res.code == 1) { this.renderCarList() } } 改变为同步函数怎么改变
可以直接将async关键字去掉,改为普通的函数即可。如下所示:
function changeNumber(target) {
let param = {
url: '/cart/number',
argument: {
id: localStorage.getItem('userId'),
goodsId: target.parentElement.parentElement.dataset.goodsid,
// number: --target.nextElementSibling.value
}
}
if (target.className == 'deleteGoods') {
param.argument.number = --target.nextElementSibling.value
if (param.argument.number == 0) {
target.nextElementSibling.value = 1
target.disabled = true
return
}
}
if (target.className == 'addGoods') {
param.argument.number = target.previousElementSibling.value
target.previousElementSibling.previousElementSibling.disabled = false
}
let res = ajax_post(param)
if (res.code == 1) {
this.renderCarList()
}
}
async changeNumber(target) { let param = { url: '/cart/number', argument: { id: localStorage.getItem('userId'), goodsId: target.parentElement.parentElement.dataset.goodsid, // number: --target.nex tElementSibling.value } } if (target.className == 'deleteGoods') { param.argument.number = --target.nextElementSibling.value if (param.argument.number == 0) { target.nextElementSibling.value = 1 target.disabled = true return } } if (target.className == 'addGoods') { param.argument.number = ++target.previousElementSibling.value target.previousElementSibling.previousElementSibling.disabled = false } let res = await ajax_post(param) if (res.code == 1) { this.renderCarList() } } 这段代码用同步函数怎么学
您好,首先需要将 async 改为 function,即将该函数改为同步函数,同时需要在异步请求部分加上 await 关键字以等待请求完成。
修改后的代码如下:
function changeNumber(target) {
let param = {
url: '/cart/number',
argument: {
id: localStorage.getItem('userId'),
goodsId: target.parentElement.parentElement.dataset.goodsid,
// number: --target.nextElementSibling.value
}
}
if (target.className == 'deleteGoods') {
param.argument.number = --target.nextElementSibling.value
if (param.argument.number == 0) {
target.nextElementSibling.value = 1
target.disabled = true
return
}
}
if (target.className == 'addGoods') {
param.argument.number = target.previousElementSibling.value
target.previousElementSibling.previousElementSibling.disabled = false
}
let res = await ajax_post(param)
if (res.code == 1) {
this.renderCarList()
}
}