gpt4 book ai didi

javascript - JavaScript 中的逗号运算符 : syntax error expected, 但代码运行正常

转载 作者:行者123 更新时间:2023-11-28 20:57:30 25 4
gpt4 key购买 nike

我刚刚修复了我的一个简单的网络应用程序中的一些错误,并偶然发现了一些有趣的行。我不记得为什么我要按照原来的方式实现这些行。现在我将它们更改为“正常”语法,一切都很好。我的问题只是出于好奇:为什么这个方法有效?我预计会出现语法错误,但事实并非如此。该代码确实有效。

这是旧方法的实现:

ListFillFilter: function(list){
if (OC.Shorty.Debug) OC.Shorty.Debug.log("using 'default' method to filter filled list");
// only makes sense for default OC.Shorty list
var data=new Array();
data['sum_shortys']=$('#desktop #list-of-shortys tbody tr').length;
data['sum_clicks']=0;
$('#desktop #list-of-shortys tbody tr').each(function(){
data['sum_clicks']+=parseInt($(this).attr('data-clicks'),10);
});
OC.Shorty.WUI.Sums.fill.apply(OC.Shorty.Runtime.Context.ListOfShortys,[data]),
// filter list
OC.Shorty.WUI.List.filter.apply(this,[list,'target',list.find('thead tr#toolbar th#target #filter').val()]),
OC.Shorty.WUI.List.filter.apply(this,[list,'title', list.find('thead tr#toolbar th#title #filter').val()]),
OC.Shorty.WUI.List.filter.apply(this,[list,'status',list.find('thead tr#toolbar th#status select :selected').val()])
// sort list
$.when(
OC.Shorty.Action.Preference.get('list-sort-code')
).done(function(pref){
OC.Shorty.WUI.List.sort(list,pref['list-sort-code']);
})
}, // OC.Shorty.Runtime.Context.ListOfShortys.ListAddInsert

在中间您可以看到 5 行,全部以“OC.Shorty.WUI.Sums.fill.apply”开头。这些行以逗号(“,”)而不是分号(“;”)结尾。为什么没有显示为语法错误?

最佳答案

基本上,comma operator将多个表达式组合在一起,它们表示最后表达式的值。对于您的情况,您也可以省略它。

假设您有以下代码:

1
2
3

这是完全有效的 JavaScript 代码。这些数字只是用来表示三个任意表达式。

如果您要执行以下操作:

var expression_value = 1
2
3

expression_value 的值为 1

如果使用逗号运算符和括号:

expression_value = (1,
2,
3)

它将具有值3,因为逗号运算符返回最右边表达式的值。

如果不使用任何括号,则将隐含以下括号:

implied = ((expression_value = 1),
2,
3)

expression_value 的值为 1,但 implied(即整个表达式)现在将为值为 3。

关于javascript - JavaScript 中的逗号运算符 : syntax error expected, 但代码运行正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com