Как выглядит функция разделения? - PullRequest
2 голосов
/ 22 сентября 2011

Я сталкивался с этим утверждением:

userName = document.cookie.split("=")[1];

после прочтения о разделенном утверждении здесь, в w3schools .который говорит, что синтаксис split равен string.split(separator, limit).Тогда что значит квадратная скобка после первого прощения.имею в виду ?Если это правда, как выглядит функция split?

Ответы [ 7 ]

5 голосов
/ 22 сентября 2011

String.split(separator, limit) возвращает массив. В Javascript вы можете получить доступ к значениям массива по индексу, используя квадратные скобки. Массивы начинаются с нуля, 0 - первый элемент, 1 - второй и т. Д.

Эквивалент вашего кода будет:

var arr = document.cookie.split("=");
userName = arr[1];

Это отделяет document.cookie знаком равенства (=) и извлекает из него второй элемент (индекс 1). document.cookie - это специальное свойство (тип данных: строка) объекта document, которое содержит все файлы cookie веб-страницы, разделенные символом ;. Например. если document.cookie содержит name=Adam, массив arr будет содержать значения name и Adam. Второй хранится в userName.

Обратите внимание: если файл cookie содержит несколько значений или если значение содержит несколько знаков равенства, он не будет работать. Рассмотрим следующие случаи:

  • document.cookie содержит name=Adam; home=Nowhere. Используя приведенный выше код, получится, что userName будет содержать Adam; home, поскольку строка отделяется знаком равенства, а затем берется второе значение.
  • document.cookie содержит home=Nowhere; name=Adam. Это приведет к userName, содержащему Nowhere; name
  • document.cookie содержит name=Adam=cool. В этом случае userName будет Adam, а не Adam=cool.

Кроме того, w3schools не так надежен . Используйте более авторитетные источники, такие как Mozilla Developer Network:

2 голосов
/ 22 сентября 2011

Функция split возвращает array строк, разделенных данным разделителем. С квадратной скобкой вы получаете доступ к n-му элементу этого (возвращенного) массива.

Если вы знакомы с Java, его поведение аналогично методу String.split ().

1 голос
/ 22 сентября 2011

Вы не должны использовать w3schools , но ...

В JavaScript параметры функции являются необязательными, и возможно предоставить меньше параметров, чем ожидает функция. Дополнительные параметры в функции тогда не определены. Некоторые функции запрограммированы на такую ​​возможность, и string.split является одной из них.

Другая часть связана с тем, что split возвращает массив. Массивы могут быть проиндексированы с использованием записи в квадратных скобках, следовательно, [1] после вызова функции.

1 голос
/ 22 сентября 2011

Split возвращает массив, например [1, 2, 3]. Если вы поставите квадратную скобку после нее, она вернет указанный ключ в скобках, в этом случае userName будет 2

1 голос
/ 22 сентября 2011

Квадратная скобка в коде, который вы указали, обращается ко второму элементу массива, возвращенному split(). Сама функция возвращает массив. Этот код будет таким же, как:

var temp = document.cookie.split("=");
userName = temp[1];
1 голос
/ 22 сентября 2011

split возвращает массив строк. Таким образом, квадратные скобки означают получение второй строки из возвращенного массива.

1 голос
/ 22 сентября 2011

Получает второй индекс полученного массива

То же, что и:

var split = document.cookie.split("=");
var userName = split[1];
...