立即执行函数使用时 ,一直报错 console.log() is not a function

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')

 所以不只是 这个错误   立即执行前没有分号的语句  两者被编译器编译后, 都有可能会有一些奇怪的报错!!! 注意排查加上分号即可!!!

原文地址:https://www.cnblogs.com/Hijacku/p/14902439.html