Python.v.JavaScript

JavaScript for Pythonistas. Python for JavaScripters

Области видимости

Имена переменных (в т.ч. функций) в Python и JavaScript могут принадлежать разным областям видимости (scopes). Например, локальная переменная, определенная внутри функции, недоступна извне этой функции.

Python Javascript
Область видимости по умолчанию #
x = 1
def fun():
    x = 2
    print("Inside function, x =", x)
fun()
print("Outside function, x =", x)
Inside function, x = 2
Outside function, x = 1

По умолчанию, переменная, создаваемая внутри функции, является локальной.


x = 1
def fun():
    global x
    x = 2
    print("Inside function, x =", x)
fun()
print("Outside function, x =", x)
Inside function, x = 2
Outside function, x = 2

Чтобы иметь возможность модифицировать глобальную переменную изнутри функции, нужно использовать ключевое слово global.

x = 1;
function fun() {
    x = 2;
    console.log("Inside function, x =", x)
}
fun();
console.log("Outside function, x =", x)
Inside function, x = 2
Outside function, x = 2

При создании переменной внутри функции в JavaScript по умолчанию она помещается в глобальный фрейм. Для создания локальной переменной необходимо использовать команду var.


x = 1; // global x
function fun() {
    var x = 2; // local x
    console.log("Inside function, x =", x)
}
fun();
console.log("Outside function, x =", x)
Inside function, x = 2
Outside function, x = 1

function sum_of_numbers(k) {
    var s=0;
    for (i=0; i<k; i++) {
        s += i
    }
    return s
}
i = 5;
console.log("Sum of numbers from 1 to 100 is", 
            sum_of_numbers(101));
console.log("And i =", i);
Sum of numbers from 1 to 100 is 5050
And i = 101

Забыли объявить переменную i — и вот результат.

© Ilya V. Schurov and contributors, 2017
Licenses: CC BY (text), MIT (code).
contribute on github