Поиск…


Синтаксис

  • var foo [= value [, foo2 [, foo3 ... [, fooN]]]];
  • let bar [= значение [, bar2 [, foo3 ... [, barN]]]];
  • const baz = значение [, baz2 = значение2 [, ... [, bazN = значениеN]]];

замечания

Смотрите также:

Переназначение констант

Вы не можете переназначить константы.

const foo = "bar";
foo = "hello";

Печать:

Uncaught TypeError: Assignment to constant.

Изменение констант

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

const person = { 
    name: "John" 
};
console.log('The name of the person is', person.name);

person.name = "Steve";
console.log('The name of the person is', person.name);

person.surname = "Fox";
console.log('The name of the person is', person.name, 'and the surname is', person.surname);

Результат:

The name of the person is John
The name of the person is Steve
The name of the person is Steve and the surname is Fox

В этом примере мы создали постоянный объект называется person , и мы переназначить person.name собственности и создали новый person.surname собственности.

Объявление и инициализация констант

Вы можете инициализировать константу, используя ключевое слово const .

const foo = 100;
const bar = false;
const person = { name: "John" };
const fun = function () = { /* ... */ };
const arrowFun = () => /* ... */ ;

Важный
Вы должны объявить и инициализировать константу в том же самом выражении.

декларация

Существует четыре основных способа объявления переменной в JavaScript: использование ключевых слов var , let или const или без ключевого слова вообще («голая» декларация). Используемый метод определяет результирующую область действия переменной или переназначение в случае const .

  • Ключевое слово var создает переменную scope-scope.
  • Ключевое слово let создает переменную-область.
  • Ключевое слово const создает переменную области блока, которую нельзя переназначить.
  • Голое объявление создает глобальную переменную.
var a = 'foo';    // Function-scope
let b = 'foo';    // Block-scope
const c = 'foo';  // Block-scope & immutable reference

Имейте в виду, что вы не можете объявлять константы, не инициализируя их одновременно.

const foo; // "Uncaught SyntaxError: Missing initializer in const declaration"

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

Типы данных

Переменные JavaScript могут содержать множество типов данных: числа, строки, массивы, объекты и многое другое:

// Number
var length = 16;

// String
var message = "Hello, World!"; 

// Array
var carNames = ['Chevrolet', 'Nissan', 'BMW']; 

// Object
var person = {
    firstName: "John",
    lastName: "Doe"
}; 

JavaScript имеет динамические типы. Это означает, что одну и ту же переменную можно использовать как разные типы:

var a;              // a is undefined
var a = 5;          // a is a Number
var a = "John";     // a is a String

Неопределенный

Объявленная переменная без значения будет иметь значение undefined

var a;

console.log(a); // logs: undefined

Попытка получить значение необъявленных переменных приводит к использованию ReferenceError. Однако оба типа необъявленных и униализированных переменных являются «неопределенными»:

var a;
console.log(typeof a === "undefined"); // logs: true
console.log(typeof variableDoesNotExist === "undefined"); // logs: true

присваивание

Чтобы назначить значение ранее объявленной переменной, используйте оператор присваивания, = :

a = 6;
b = "Foo";

В качестве альтернативы независимой декларации и присваиванию в одном из операторов можно выполнить оба шага:

var a = 6;
let b = "Foo";

Именно в этом синтаксисе глобальные переменные могут быть объявлены без ключевого слова; если кто-то должен объявить голой переменной без назначения сразу после слова, интерпретатор не сможет отличать глобальные объявления a; из ссылок на переменные a; ,

c = 5;
c = "Now the value is a String.";
myNewGlobal;    // ReferenceError

Обратите внимание, однако, что вышеупомянутый синтаксис обычно обескуражен и не соответствует строгому режиму. Это делается для того, чтобы избежать сценария, в котором программист непреднамеренно удаляет ключевое слово let или var из своего утверждения, случайно создавая переменную в глобальном пространстве имен, не осознавая ее. Это может загрязнять глобальное пространство имен и конфликты с библиотеками и правильное функционирование скрипта. Поэтому глобальные переменные должны быть объявлены и инициализированы с использованием ключевого слова var в контексте объекта окна, вместо этого, чтобы явно было указано намерение.

Кроме того, переменные могут быть объявлены несколько раз за раз, разделяя каждое объявление (и необязательное присвоение значения) запятой. Используя этот синтаксис, слова var и let нужно использовать только один раз в начале каждого оператора.

globalA = "1", globalB = "2";
let x, y = 5;
var person = 'John Doe',
    foo,
    age = 14,
    date = new Date(); 

Обратите внимание, что в предыдущем фрагменте кода порядок выполнения выражений объявления и присваивания ( var a, b, c = 2, d; ) не имеет значения. Вы можете свободно смешивать два.

Объявление функции эффективно создает переменные.

Математические операции и назначение

Увеличение на

var a = 9,  
b = 3;  
b += a;  

b теперь будет 12

Это функционально то же самое, что и

b = b + a; 

Уменьшение на

var a = 9,  
b = 3;  
b -= a;  

b теперь будет 6

Это функционально то же самое, что и

b = b - a;  

Умножить на

var a = 5,  
b = 3;  
b *= a;  

b теперь будет 15

Это функционально то же самое, что и

b = b * a;  

Поделить на

var a = 3,  
b = 15;  
b /= a;  

b теперь будет 5

Это функционально то же самое, что и

b = b / a;  

7

Поднято до степени

var a = 3,  
b = 15;  
b **= a;  

b теперь будет 3375

Это функционально то же самое, что и

b = b ** a;  


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow