2016-11-15 3 views
0

После this учебник, что означают эти линии?Оператор запятой в JavaScript

var join = require('path').join 
    , pfx = join(__dirname, '../_certs/pfx.p12'); 

Оператор запятой оценивает каждый из операндов (слева направо) и возвращает значение последнего операнда.

Как эти строки легче писать?

+2

Это ** есть ** запятая, но ** ** ** «запятая». – Pointy

+0

@Pointy - На самом деле это правильно, в этом случае это просто сеператор. – adeneo

+0

Ссылки на комментарий Понки: [грамматика оператора 'var' с использованием запятой (а не оператором запятой)] (http://www.ecma-international.org/ecma-262/6.0/#sec-variable-statement) и [оператор запятой] (http://www.ecma-international.org/ecma-262/6.0/#sec-comma-operator) –

ответ

5

В этом случае запятая отделяет две переменные, и это все, это то же самое, как написание

var join = require('path').join; 
var pfx = join(__dirname, '../_certs/pfx.p12'); 

Вместо этого можно сделать

var join = require('path').join, 
    pfx = join(__dirname, '../_certs/pfx.p12'); 

В этом случае запятая просто seperator, так же, как это было бы литералом объекта или массивом.

Запятая Оператор, который является только оператором, когда он действует на два выражения, один на левой стороне и один справа, может использоваться, если вы хотите включить несколько выражений в местоположение, которое требует одно выражение.

Одним из примеров может быть в ответном заявлении

[1,2,3].reduce(function(a,b,i) { 
    return a[i] = b, a; // returns a; 
},[]); 

и т.д ...

+0

yep это сокращенная версия, поэтому вам не нужно писать var дважды при объявлении переменных в преемственность – Pixelomo

+0

Сокращение, да; но эта нотация не делает для чистых git diff при добавлении или удалении переменных в начале или в конце. По этой причине мне это не нравится. – RyanZim

0

Это по существу такой же, как точка с запятой, во многих случаях, так что вы могли бы переписать его, как это:

var join = require('path').join; 
var pfx = join(__dirname, '../_certs/pfx.p12'); 

Разница сводится к строкам, таким как объявления переменных (например, ваш пример), в которых var применяется к каждому элементу в списке, разделенном запятыми. Помимо этого, это более или менее точка с запятой, хотя в большинстве случаев не рекомендуется использовать синтаксис запятой.

Я лично предпочитаю это для переменных, потому что я думаю, что это выглядит немного очистителя:

var a = 5, 
    b = 6, 
    c, 
    d; 

Но другие не нравится.

Смежные вопросы