CNode

请教关于()的用法

问答
ZZeeyanLeung发布于11 年前最后回复11 年前8 回复5411 浏览0 收藏

var foo = function () {
var local = "局部变量";
(function () {
console.log(local); }()); };

请问第3,4行的括号有什么用处啦?

查看回复

回复 (8)

D
DavidCai1993#1·11 年前

让内部的匿名函数自执行

A
alsotang#2·11 年前

应该是 (function () {})() 而不是 (function () {}())

S
SweetHeartXi#4·11 年前

(function () {})() 匿名自执行函数,由于(function(){})是表达式,js会去对它求解得到返回值,由于返回值是一个函数,故遇到();时会被执行.

F
frosh#5·11 年前

不过这段代码写法木有必要

D
dayuoba#6·11 年前

两种方式都可以

1,(function(){})()
2,(function(){}())

不可以的:

function() {}()

可以的:

var func = function() {}()

最开始的两种写法把函数生声明化为了函数表达式->函数声明是不可以用()自调用的,因为()会被忽略

//Throw error
//function() {
//      console.log('invoked');
//}()

//invoked
//var func = function() {
//      console.log('invoked');
//}()

//invoked
//(function() {
//      console.log('invoked');
//}())

//invoked
//(function() {
//      console.log('invoked');
//})()

H
hugeannex#8·11 年前

优先运算。2楼误导人家。这样写也不可以的,不了解不要轻言。

参与回复
登录后即可参与回复。登录