泛型对象内的无符号函数

时间:2016-10-27 11:49:56

标签: javascript

为了好奇,我今天在我的控制台上运行了这个

var x={function(){return 2}};

有效。但为什么?如何调用无名函数?我认为这种语法没有意义

3 个答案:

答案 0 :(得分:1)

此处object initializer会将x解释为包含function的密钥function的对象。

FirefoxChrome将解释此声明(基于其支持的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]) {},
};