JS调用冒泡排序函数传[1,3]报Invalid destructuring assignment错误原因
问题原因分析
你出现报错的核心原因是调用函数时错误添加了function关键字,和你是否直接传数组字面量没有关系:
function关键字仅用于函数声明/定义场景,调用已经声明好的函数时,不需要加该关键字,直接写函数名(参数)即可。- 你写的错误调用代码
function bubbleg([1, 3]);会被JS解释器识别为「新声明一个名为bubbleg的函数」,此时括号内的内容会被解析为形参列表。你填入的[1, 3]会被解释器判定为数组解构形参语法,但解构的目标必须是可赋值的标识符(变量名),不能是1、3这类字面量,因此抛出Invalid destructuring assignment target(解构赋值目标不合法)的语法错误。 - 你修改后的代码
num= [1,3] function bubbleg(num);严格来说也不符合标准语法,仍然多写了function关键字,能正常运行大概率是实际编码时漏写了多余的function,或是JS解释器做了容错处理。正确的调用写法可以直接是bubbleg([1, 3]),不需要提前将数组赋值给变量。
相关学习资料推荐
这类JS基础语法类的常见错误,可以参考两类书籍排查:
- 《JavaScript高级程序设计(第4版)》:业内俗称红宝书,前几章的基础语法部分完整覆盖了JS的标准语法规则,以及新手容易混淆的语法坑点。
- 《你不知道的JavaScript(上卷)》:其中语法部分对JS的解析规则做了更深入的讲解,能帮你理解各类语法报错的底层逻辑。
内容的提问来源于stack exchange,提问作者zzzbei
相关产品推荐
相关产品推荐

