Har*_*nan 5 javascript anonymous-function
我有一个像这样的Javascript代码段:
var a = {ac: 10, function(){console.log("hi")}}
Run Code Online (Sandbox Code Playgroud)
浏览器没有为此抛出错误.所以它可能是有效的.
但是当我使用时
var a = {ac: 10, function hi(){console.log("hi")}}
Run Code Online (Sandbox Code Playgroud)
浏览器抛出错误:
Uncaught SyntaxError:意外的标识符
任何人都可以告诉我如何在Javascript中的任何场景中使用第一个代码
提前致谢
您在第一个示例中所做的是被调用shorthand method names
,并且是在js对象中初始化函数的一种新方法.在您的示例中实际发生的是,它采用对象键(和函数名称)的名称function
.但'function'可以替换为任何键/名称.例如:
var a = {
ac: 10,
other() { console.log('inside other') }
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关初始化对象的不同方法的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer
您的第二个示例失败的原因仅仅是因为它是无效的语法.如果您function
从第二个示例中删除该单词,它将按照我认为您最初期望的那样工作.
小智 5
ES6允许您使用函数定义的简写语法。这:const obj = { method() {} }
基本上翻译成this const obj = { method: function() {} }
。
因此,当您使用此代码段时,var a = {ac: 10, function(){console.log("hi")}}
您是在告诉浏览器该function
对象内不是保留字,而是要使用的属性名称,因此最终得到一个对象,该对象的方法称为function
。
顺便说一句,您将来应该避免这种情况,请勿将保留关键字用于其他目的。
在第二个片段中,var a = {ac: 10, function hi(){console.log("hi")}}
发生的事情是您试图在一个对象中包含一个函数声明(function hi(){console.log("hi")}
),这是一个语法错误。通过给函数命名,可以从对象内部方法声明的简写语法更改为函数定义。如果对此速记语法使用适当的命名(避免使用保留词),或者在外部声明该函数并在对象内部引用该函数,则应该没有问题。
归档时间: |
|
查看次数: |
1397 次 |
最近记录: |