以 「(」、「[」、「/」、「+」、或 「-」 開始的語句,那麼它極有可能和前一條語句合在一塊兒解釋。函數
(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。