在变量中声明函数的不同方法

sha*_*unb 2 javascript

我很好奇以下两种在Javascript中声明变量函数的方法.下面两个函数声明之间的区别是什么?两者似乎都有效.使用一个比另一个有任何缺点吗?在查看调试器时,它们的构造似乎略有不同.

另外,我相当肯定第一种方法被称为"对象文字符号".第二种方法有正式名称吗?

var myVar = {
    testProperty: 'testProperty',

    // Object literal notation?
    testFunc: function()
    {
        console.log('testFunc called');
    },

    // What's this called? 'Named function declaration'?
    testFunc2()
    {
        console.log('testFunc2 called');
    }
}

// Both work...
myVar.testFunc();
myVar.testFunc2();
Run Code Online (Sandbox Code Playgroud)

Ori*_*iol 5

有多种方法可以在对象初始值设定项(ObjectLiteral)中定义属性(PropertyDefinition):

它们具有不同的语法并提供不同的功能,但结果始终是在结果对象中创建属性.在你的情况中,一种方法的定义是基本相同"简单" PropertyDefinition其中AssignmentExpression函数式.但是,使用后者可以为函数指定自定义名称.

另见