Python.v.JavaScript

JavaScript for Pythonistas. Python for JavaScripters

Функции

Функции определяются в Python и JavaScript похожим образом, но с некоторыми тонкими различиями.

Python Javascript
Именованные параметры #
def foo(x, y):
    print("x =", x, " y =", y)
foo(2, 3)
foo(x=2, y=3)
foo(y=2, x=3)
x = 2  y = 3
x = 2  y = 3
x = 3  y = 2
function foo(x, y) {
    console.log("x = " + x + " y = " + y)
}
foo(2, 3);
foo(x=2, y=3);
foo(y=2, x=3);
console.log(x);
console.log(y);
x = 2 y = 3
x = 2 y = 3
x = 2 y = 3
3
2

У вас может возникнуть искушение использовать синтаксис, похожий на Python, для передачи аргументов функции. К сожалению, в JavaScript он не сработает, поскольку JS не поддерживает именованные параметры функций. При выполнении строчки foo(x=2, y=3) на самом деле x=2 осуществляют операцию присваивания переменной x значения 2, а y=3 — переменной y значения 3 (в области видимости, из которой функция вызывается). При этом операции присваивания в JS возвращают значение (равное присвоенной величине), поэтому эта строчка сработает как foo(2, 3). Следующая строчка сработает точно так же, несмотря на то, что x и y поменялись местами.


function foo(args) {
    console.log("x = " + args.x + " y = " + args.y);
}
foo({x: 2, y: 3})
x = 2 y = 3
© Ilya V. Schurov and contributors, 2017
Licenses: CC BY (text), MIT (code).
contribute on github