JavaScript不写分号带来的一个问题

发布时间:2019-11-13

今天在写一段代码,由于自己写js很少手动加分号,通常会使用prettier自动化格式化,在使用prettier格式化时导致两行代码合并成了一行,从而运行这段代码报错。

有问题的写法

function shuffle(arr) { let m = arr.length while (m > 1) { let index = parseInt(Math.random() * m--) [arr[index], arr[m]] = [arr[m], arr[index]] } return arr; }

格式化后

function shuffle(arr) { let m = arr.length; while (m > 1) { // 很明显这行代码错误了 let index = (parseInt(Math.random() * m--)[(arr[index], arr[m])] = [ arr[m], arr[index] ]); } return arr; }

解决办法

1、在let index = parseInt(Math.random() * m--)后加上; 2、使用{}包住函数块

function shuffle(arr) { let m = arr.length while (m > 1) { let index = parseInt(Math.random() * m--) { [arr[index], arr[m]] = [arr[m], arr[index]] } } return arr; }