JavaScript中的尾部逗号是标准格式,还是像Chrome和Firefox这样的大多数浏览器都可以接受?
我以为它们是标准的,但是IE8在遇到一个标准后就呕吐了—当然IE几乎不支持某些功能,这意味着它不是标准的。
这是我的意思的示例(在books数组的最后一个元素之后):
var viewModel = {
books: ko.observableArray([
{ title: "..", display: function() { return ".."; } },
{ title: "..", display: function() { return ".."; } },
{ title: "..", display: function() { return ".."; } }, // <--right there
]),
currentTemplate: ko.observable("bookTemplate1"),
displayTemplate: function() { return viewModel.currentTemplate(); }
};
规格:ECMAScript 5和ECMAScript 3
5规范中的11.1.5节:
ObjectLiteral :
{ }
{ PropertyNameAndValueList }
{ PropertyNameAndValueList , }
是的,它是规范的一部分。
更新: 显然,这是ES5中的新功能。在ES3(第41页)中,定义仅为:
ObjectLiteral :
{ }
{ PropertyNameAndValueList }
对于数组文字(第11.1.4节),它甚至更有趣(
更新: ES3中已经存在):
ArrayLiteral :
[ Elisionopt ]
[ ElementList ]
[ ElementList , Elision_opt ]
(Elision_opt
Elision opt在哪里,这意味着Elision是可选的)
Elision
被定义为
Elision :
,
Elision ,
因此,像这样的数组文字
var arr = [1,2,,,,];
是完全合法的。这将创建一个包含两个元素的数组,但将数组长度设置为2 + 3 = 5
。
不要对IE期望太多(在IE9之前)…
假设我有一个URL,其路径为: 如何将其转换为大摇大摆的文档,具体地说,将对象数组和数组作为查询参数。
问题内容: 有没有一种简单的方法来验证对象属于给定的类?例如,我可以 但这需要每次在运行中实例化一个新对象,而只是将其丢弃。有没有更好的方法来检查“ a”是否属于类“ MyClass”? 问题答案: 如其他答案所述,关键字通常是您想要的。请记住,超类也会返回。 如果要查看对象是否是类的直接实例,则可以比较该类。您可以通过获取实例的类对象。您可以通过静态访问特定的类。 因此,例如: 在上面的例子中,
问题内容: 数组初始化器可用于在编译时初始化数组。带有尾随逗号的初始化器,如下所示,可以正常编译。 输出: 在上述讨论中显而易见的一维数组也是合法的。 输出: 即使下面的内容是合法的语法,也可以编译。 编译器在逗号前后应有一个常量值(或另一个初始化程序)。如何编译?编译器是否只是忽略了这种逗号或在这种情况下发生了其他事情? 问题答案: 末尾的逗号将被忽略。根据Java规范: 尾部逗号可能会出现在数
所以我需要传入一个对象,其中每个属性都是数组。该函数将使用每个数组中保存的信息,但我希望通过检查其每个数组是否为空/空来检查整个对象是否为空(不仅仅是没有属性)。我目前所掌握的: 例如,这将导致上面的: 而这是我正在检查的空(也是真的): 上面的代码不起作用。提前道谢。
问题内容: 我遇到了一个问题。我有这个mixin(这是尝试将更少的端口移植到sass): 显然这是行不通的:D我希望它生成如下内容: mixin在各种div类中被调用,因此不可能(轻松)使其变为静态。 Sass专业人士(或非专业人士,但比我聪明)是否有任何解决方法?感谢大家的关注和分享您的解决方案。 问题答案: 对于Sass 3.2和更早版本,这些是使用父选择器的所有有效方法: 从Sass 3.3
问题内容: 在单个元素元组的情况下,需要尾随逗号。 那么具有多个元素的元组呢?似乎尾随逗号是否存在,它们都有效。它是否正确?我认为使用逗号结尾更易于编辑。那是不好的编码风格吗? 问题答案: 在所有情况下,除了空元组,逗号都是重要的事情。仅在出于其他语法原因而需要时才需要括号:将元组与一组函数参数,运算符优先级区分开或允许换行。 元组,列表或函数参数的尾部逗号是一种不错的样式,尤其是当你有一个长的初