В чем смысл этого кода (0, функция) в javascript
Я нашел этот код в чей-то код, он звучит так:
(0, function (arg) { ... })(this)
После того, как я попытаюсь сыграть, как показано ниже,
(0, function (arg) { console.log(arg) })(2);
console.log((0, 1, 2, 3));
(0, function plus1 (arg) { console.log(arg + 1) }, function plus2 (arg) { console.log(arg + 2) })(5);
Ответы
Ответ 1
В этом конкретном случае это кажется излишним, но иногда этот подход полезен.
Например, с eval
:
(function() {
(0,eval)("var foo = 123"); // indirect call to eval, creates global variable
})();
console.log(foo); // 123
(function() {
eval("var bar = 123"); // direct call to eval, creates local variable
})();
console.log(bar); // ReferenceError
Ответ 2
типичным примером может быть,
for(var i=0,j=10; i < j; i++){
// code ...
}
оператор запятой будет оценивать выражения слева направо и возвращать результат самого правильного выражения
// e.g.
var a = 1, b= 2, c = 3, d = function(){ console.log("a => " + a) }()
Ответ 3
Это оператор запятая, завернутый в self-executing анонимная функция. Однако я понятия не имею, почему был включен бессмысленный 0
, за исключением obfuscation целей.