js中的length居然是可以修改的
起因
写了一个函数用于比对用户名和密码,函数内容大概如下:
var temp=await this.userService.selectUser(body.userName) |
然后发现,第二行也就是console.log是可以正常输出的,但是在第六行确报了password undefined的错误。这是我就很迷惑啊,以为是异步处理出现了什么问题。找了半天错了,最后发现错误很离谱…..
错误分析
错误的根源在于第三行判断长度时,少写了一个等号!也就是temp.length=0
应该是temp.length==0
,这时我就想,难道length是可以重新赋值的?
查了一下文档,果然是这样的,具体参考Array.length。
仔细想了一下,也没什么奇怪的,毕竟是x.length
而不是x.length()
或者len(x)
。length是array的一个属性而已。认为其不可改可能是受到其他语言习惯的影响,认为其原理是执行函数计算一下大小。