function(){ }();报错原因

出现这个错误的原因是因为Javascript设计时,function既可以当做语句又可以当做是表达式。

语句:

function f(){}

表达式:

var f = function f(){}

为了避免解析上的歧义,JavaScript 引擎规定,如果function关键字出现在行首,一律解释成语句。因此,JavaScript 引擎看到行首是function关键字之后,认为这一段都是函数的定义,不应该以圆括号结尾,所以就报错了。

解决办法

不要让function关键词出现在行首就可以解决这个问题了。

最简单的解决办法就是添加一个括号

例如:

(function(){ /* code */ }());
// 或者
(function(){ /* code */ })();

目的

一是不必为函数命名,避免了污染全局变量;

二是 IIFE 内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。

 

站长博客:https://www.pipipi.net/

 

你可能感兴趣的:(JavaScript)