Всё вместе: особенности JavaScript

Лекция



Привет, сегодня поговорим про всё вместе, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое всё вместе, особенности javascript , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend).

  1. Структура кода
  2. Переменные и типы
  3. Взаимодействие с посетителем
  4. Особенности операторов
  5. Логические операторы
  6. Циклы
  7. Конструкция switch
  8. Функции
  9. Методы и свойства
  10. Итого

В этой главе приводятся основные особенности javascript , на уровне базовых конструкций, типов, синтаксиса.

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

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

Структура кода

Операторы разделяются точкой с запятой:

 

   
1 alert('Привет'); alert('Мир');

 

Как правило, перевод строки тоже подразумевает точку с запятой. Так тоже будет работать:

 

   
1 alert('Привет')
2 alert('Мир')

 

..Однако, иногда JavaScript не вставляет точку с запятой. Например:

   
1 var a = 2
2 +3
3  
4 alert(a); // 5

 

Бывают случаи, когда это ведет к ошибкам, которые достаточно трудно найти и исправить.

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

Поддерживаются однострочные комментарии // ... и многострочные /* ... */:

Подробнее: Структура кода.

Переменные и типы

  • Объявляются директивой var. Могут хранить любое значение:

     

    var x = 5;
    x = "Петя";

     

  • Есть 5 «примитивных» типов и объекты:
    1 x = 1;             // число
    2 x = "Тест";        // строка, кавычки могут быть одинарные или двойные
    3 x = true;          // булево значение true/false
    4 x = null;          // спец. значение (само себе тип)
    5 x = undefined;     // спец. значение (само себе тип)

    Также есть специальные числовые значения Infinity (бесконечность) и NaN.

    Значение NaN обозначает ошибку и является результатом числовой операции, если она некорректна.

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

  • Значение null не является «ссылкой на нулевой адрес/объект» или чем-то подобным. Это просто специальное значение.

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

    Например:

    var age = null// возраст неизвестен

     

  • Значение undefined означает «переменная не присвоена».

    Например:

    var x;
    alert( x ); // undefined

     

    Можно присвоить его и явным образом: x = undefined, но так делать не рекомендуется.

  • В имени переменной могут быть использованы любые буквы или цифры, но цифра не может быть первой. Символы доллар $ и подчеркивание _ допускаются наравне с буквами.

Подробнее: Переменные, Введение в типы данных.

Взаимодействие с посетителем

Простейшие функции для взаимодействия с посетителем в браузере:

prompt(вопрос[, по_умолчанию])
Задать вопрос и возвратить введенную строку, либо null, если посетитель нажал «Отмена».
confirm(вопрос)
Задать вопрос и предложить кнопки «Ок», «Отмена». Возвращает, соответственно, true/false.
alert(сообщение)
Вывести сообщение на экран.

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

Например:

   
1 var userName = prompt("Введите имя?""Василий");
2 var smokes = confirm("Вы хотите чаю?");
3  
4 alert( "Посетитель: " + userName);
5 alert( "Чай: " + smokes);

 

Подробнее: Взаимодействие с пользователем: alert, prompt, confirm.

Особенности операторов

  • Для сложения строк используется оператор +.

    Если хоть один аргумент — строка, то другой тоже приводится к строке:

     

       
    1 alert( 1 + 2 );   // 3, число
    2 alert( '1' + 2 ); // '12', строка
    3 alert( 1 + '2' ); // '12', строка

     

  • Сравнение === проверяет точное равенство, включая одинаковый тип. Это самый очевидный и надежный способ сравнения.

    Остальные сравнения == < <= > >= осуществляют числовое приведение типа:

     

       
    1 alert( 0 == false ); // true
    2 alert( true > 0 );   // true

     

    Приведения не будет при сравнении двух строк (см. Об этом говорит сайт https://intellect.icu . далее).

    Исключение: значения null и undefined ведут себя в сравнениях не как ноль.

    • Они равны друг другу null == undefined и не равны ничему еще. В частности, не равны нулю.
    • В других сравнениях с приведением (не ===) значение null преобразуется к нулю, аundefined — становится NaN («ошибка»).

    Такое поведение может привести к неочевидным результатам, поэтому лучше всего использовать для сравнения с ними ===.

    Например, забавное следствие этих правил для null:

       
    1 alert( null > 0 );  // false, т.к. null преобразовано к 0
    2 alert( null == 0 ); // false, в стандарте явно указано, что null равен лишь undefined
    3  
    4 // но при этом (!)
    5 alert( null >= 0 ); // true, т.к. null преобразовано к 0
    С точки зрения здравого смысла такое невозможно. Значение null не равно нулю и не больше, но при этом null >= 0 возвращает true!

     

  • Сравнение строк — лексикографическое, символы сравниваются по своим unicode-кодам.

    Поэтому получается, что строчные буквы всегда больше, чем прописные:

     

       
    1 alert('а' 'Я'); // true

     

Подробнее: Основные операторы, Операторы сравнения и логические значения.

Логические операторы

В JavaScript есть логические операторы: И (обозначается &&), ИЛИ (обозначается ||) и НЕ (обозначается !). Они интерпретируют любое значение как логическое.

Не стоит путать их с побитовыми операторами И, ИЛИ, НЕ, которые тоже есть в JavaScript и работают с числами на уровне битов.

Как и в большинстве других языков, в логических операторах используется «короткий цикл» вычислений. Например, вычисление выражения 1 && 0 && 2 остановится после первого И &&, т.к. понятно что результат будет ложным (ноль интерпретируется как false).

Результатом логического оператора служит последнее значение в коротком цикле вычислений.

Можно сказать и по-другому: значения хоть и интерпретируются как логические, но то, которое в итоге определяет результат, возвращается без преобразования.

Например:

   
1 alert( 0 && 1 ); // 0
2 alert( 1 && 2 && 3 ); // 3
3 alert( null || 1 || 2 ); // 1

 

Подробнее: Логические операторы.

Циклы

  • Поддерживаются три вида циклов:

     

    01 // 1
    02 while (условие) { 
    03   ...
    04 }
    05  
    06 // 2
    07 do 
    08   ...
    09 while(условие);
    10  
    11 // 3
    12 for (var i = 0; i < 10; i++) {
    13   ...
    14 }

     

  • Переменную можно объявлять прямо в цикле, но видна она будет и за его пределами.
  • Поддерживаются директивы break/continue для выхода из цикла/перехода на следующую итерацию.

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

    Синтаксис: «имя_метки:», ставится она только перед циклами и блоками, например:

     

    1 outer:
    2 for(;;) {
    3     ...
    4   for(;;) {
    5     ...
    6     break outer;
    7   }
    8 }

     

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

Подробнее: Директивы break и continue.

Конструкция switch

При сравнениях в конструкции switch используется оператор ===.

Например:

 

   
01 var age = prompt('Ваш возраст', 18);
02  
03 switch (age) {
04   case 18:
05     alert('Никогда не сработает'); // результат prompt - строка, а не число
06  
07   case "18":  // вот так - сработает!
08     alert('Вам 18 лет!');
09     break;
10  
11   default:
12     alert('Любое значение, не совпавшее с case');
13 }

 

Подробнее: Конструкция switch.

Функции

Синтаксис функций в JavaScript:

 

1 // function имя(список параметров) { тело }
2 function sum(a, b) {
3   var result = a + b;
4  
5   return result;
6 }

 

  • sum — имя функции, ограничения на имя функции — те же, что и на имя переменной.
  • Переменные, объявленные через var внутри функции, видны везде внутри этой функции, блокиiffor и т.п. на видимость не влияют.
  • Параметры передаются «по значению», т.е. копируются в локальные переменные ab, за исключением объектов, которые передаются «по ссылке», их мы подробно обсудим в главеОбъекты как ассоциативные массивы.
  • Функция без return считается возвращающей undefined. Вызов return без значения также возвращает undefined:

     

       
    1 function f() { }
    2 alert( f() ); // undefined

     

Подробнее: Функции.

Методы и свойства

Все значения в JavaScript, за исключением null и undefined, содержат набор вспомогательных функций и значений, доступных «через точку».

Такие функции называют «методами», а значения — «свойствами».

Например:

 

   
1 alert( "Привет, мир!".length ); // 12

 

Еще у строк есть метод toUpperCase(), который возвращает строку в верхнем регистре:

 

   
1 var hello = "Привет, мир!";
2  
3 alert( hello.toUpperCase() ); // "ПРИВЕТ, МИР!"

 

Подробнее: Методы и свойства.

Итого

В этой главе мы повторили основные особенности JavaScript, знание которых необходимо для обхода большинства «граблей», да и просто для написания хорошего кода.

К сожалению, в одной статье не просто дать все знания про всё вместе. Но я - старался. Если ты проявишь интерес к раскрытию подробностей,я обязательно напишу продолжение! Надеюсь, что теперь ты понял что такое всё вместе, особенности javascript и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)

создано: 2014-10-07
обновлено: 2024-11-14
240



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)

Термины: Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)