以 “(”、“[”、“/”、“+”、或 “-” 开始的语句,那么它极有可能和前一条语句合在一块儿解释。函数
(function(){alert("1")})()// 能够正常执行
(function(){alert("2")})()// TypeError
复制代码
// 都可正常执行
(function(){alert("1")})();
(function(){alert("2")})()
复制代码
// 但愿声明obj后,可以输出到控制台,可是会TypeError
var obj = {
a:1
}(function(){
console.log(obj)
})()
复制代码
var obj = {
a:1
};(function(){
console.log(obj)
})()//{a: 1}
复制代码
(
开头的当即执行函数表达式,它的(funtion()
与上一句进行了解析。剩下的就只有{console.log(obj)})()
了。()
是执行函数,因为{console.log(obj)})
并非一个函数,因此会出现TypeError。