var reverse = function (arr) { let temp = arr.splice(0,arr.length-1) // splice 第二个参数为 要删除的元素个数!! 0表示不删除 ,第三个为可选,表示向数组新增元素 temp = temp.reverse(); console.log(temp) temp = temp.concat(arr); return temp } console.log(reverse([1,2,3,4,5,null])); // 报错原因是 这里的 console.log() 没加分号, 所以js编译器应该是 把这个和 立即执行函数的括号当成一个 函数调用【console.log()(function()())】了
所以就报错 console.log() 不是个函数!!!
/** * 删除元音字符 */ (function () { console.log(s); })(s='123')
所以不只是 这个错误 立即执行前没有分号的语句 两者被编译器编译后, 都有可能会有一些奇怪的报错!!! 注意排查加上分号即可!!!