为了好奇,我今天在我的控制台上运行了这个
var x={function(){return 2}};
有效。但为什么?如何调用无名函数?我认为这种语法没有意义
答案 0 :(得分:1)
此处object initializer会将x
解释为包含function的密钥function
的对象。
Firefox
和Chrome
将解释此声明(基于其支持的ECMAScript版本以不同方式); IE11
不会解释此声明。
以下代码可能更清楚地说明了这一点:
window.onload = function() {
// Is an object with key "function" which holds a 'function' object
var x = {
function() {
return 2
}
};
console.log(x);
// Call the function
console.log(x.function());
// unwrap it for better clarity
var y = function() {
return 2
};
console.log(y);
var z = {
y
};
console.log(z);
console.log(z.y());
}

让我们看另一个案例:
var x = {
y() {
return 2
}
};
console.log(x);
console.log(x.y());

简短回答:虽然浏览器可以解释该语句,但function
是对象的错误键名。
答案 1 :(得分:0)
这是function
var x = {
function(){
return 2
}
};
x.function() // => 2
的对象文字:
function
命名方法func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
NSNotificationCenter.defaultCenter().addObserver(self, selector:#selector(self.checkForReachability(_:)), name: "ReachabilityChangedNotification", object: nil);
do {
try self.reachability = Reachability.reachabilityForInternetConnection()
}
catch {
print(error)
}
do {
try self.reachability.startNotifier()
}
catch {
print(error)
}
return true
}
没有多大意义,但它是一个有效的JavaScript。
答案 2 :(得分:0)
这是速记方法名称(ES6):https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Object_initializer
var o = {
property([parameters]) {},
};