2016-04-25 2 views
0

В Firefox 45 на OSX, когда я извлекаю элемент из localStorage из ключа, которого не существует, вызов функции возвращает null. Я тестировал это на консоли.Почему Javascript передает значение null в строку при присвоении переменной?

Если я вместо этого назначу результат вызова переменной и напечатаю его значение в консоли, я получаю "null", то есть строку.

Почему переменное назначение ранее не заданной переменной приводит результат вызова к String?

Б код (в консоли):

localStorage.getItem("non-existing-key"); // returns null 

var x = localStorage.getItem("non-existing-key"); 
x // returns "null" 

Edit: обе версии, кажется, правильно вести себя на Chrome 50.0.2661.86 на OSX (оба возвращают null)

Edit2: моя ошибка. Я использовал другое имя переменной в своих тестах (в частности: var name). Теперь, если я позволю консоли вернуть значение переменной name, он возвращает window.name, что является свойством window типа String, по умолчанию "null". Таким образом, это не назначение, которое вызывает литье, но вместо этого оно имеет свойство String, определенное window.

+0

firefox 45.0.2 на окнах, не может воспроизводить: localStorage.getItem («несуществующий ключ»); // возвращает null var x = localStorage.getItem ("несуществующий ключ"); x // -> возвращает null не "null" – Giuseppe

+0

Используется OSX, отредактирован. –

+0

Что он возвращает в другом браузере? Я считаю, что вы путаетесь между 'null' и' "null" ' – Rayon

ответ

0

Я допустил ошибку. Конкретный код, который я использовал, был следующий:

var name = localStorage.getItem("non-existing-key"); 
name 

Теперь getItem делает возвращение null, а не String. Что происходит, так это то, что пуская консоль печатать значение name, она действительно получает window.name (см. window.name on MDN), которая по умолчанию равна "null" (a String).

Смежные вопросы