我没有习惯;在javascript代码中使用分号.这是我的API,但这不起作用.在这里回应显示500 Internal Server Error
router.post('/addRows', function (req, res) {
const saveData = []
[1,2,3,4,5,6,7,8,9,10].map((i) => {
console.log(i)
saveData.push(i)
if (saveData.length === 10) {
res.status(200).json({'data': saveData});
}
})
})
Run Code Online (Sandbox Code Playgroud)
但如果我;在第二行后添加分号,则此代码正常工作.在这里回应显示200 OK
router.post('/addRows', function (req, res) {
const saveData = [];
[1,2,3,4,5,6,7,8,9,10].map((i) => {
console.log(i)
saveData.push(i)
if (saveData.length === 10) {
res.status(200).json({'data': saveData});
}
})
})
Run Code Online (Sandbox Code Playgroud)
什么是问题.请描述一下
您遇到了自动分号插入的问题之一,JavaScript的功能允许分号"可选".
在您的情况下,当您在数组赋值后错过分号时,下一行中的数组文字将被解释为对数组中元素的引用,这当然是未定义的.您可以将代码读作:
router.post('/addRows', function (req, res) {
const saveData = [][1,2,3,4,5,6,7,8,9,10].map((i) => {
console.log(i)
saveData.push(i)
if (saveData.length === 10) {
res.status(200).json({'data': saveData});
}
})
})
Run Code Online (Sandbox Code Playgroud)
这可能看起来不是有效但它是 - 第二个数组文字被解析为包含带逗号("分组")运算符的表达式的属性查找.逗号运算符返回其最终操作数,因此您可以简化上述操作:
router.post('/addRows', function (req, res) {
const saveData = [][10].map((i) => {
console.log(i)
saveData.push(i)
if (saveData.length === 10) {
res.status(200).json({'data': saveData});
}
})
})
Run Code Online (Sandbox Code Playgroud)
添加分号时,可以消除歧义,并将第二个数组文字解析为数组文字而不是属性访问器.
| 归档时间: |
|
| 查看次数: |
2537 次 |
| 最近记录: |