2015-10-23 6 views
3

Я занимался некоторыми пробелами в javascript, и я столкнулся с проблемой со значениями переменных.Как очистить переменные JavaScript при перезагрузке страницы?

Сначала я выполнил этот код:

function changeName() { 
    name = "Ronaldinho"; 
} 
changeName() 
console.log(name); 

Выход в консоли был: Роналдиньо

Тогда я performmed только этот код:

console.log(name); 

Выход в консоли еще был: Роналдиньо

Я использовал Google Chrome. Я попытался очистить кэш, все параметры перезагрузки страницы (ctrl + F5/shift + F5/ctrl + R/shift + R/Щелкните правой кнопкой мыши значок перезагрузки и «Запустить перезагрузку и очистить кеш»), очистите кеш, очистите консоль, включить опцию «Отключить кеш (в то время как DevTools открыт)».

Это работает, только когда я закрываю и открываю новую вкладку.

+0

Айе? Чего вы пытаетесь достичь? – AdamJeffers

+0

Объем не сохраняется при обновлении. Что вы сделали точно, запустили этот код внутри скрипта.js, а затем удалили его, заменили его просто «console.log (name)», сохранили файл .js, перезагрузили браузер и все еще получили тот же результат? Потому что такая вещь невозможна – BBog

+0

@BBog Я так и не подозревал об этом ... поэтому я открыл Dev Tools (с этой страницы) в Chrome и вставил в свой первый блок и запустил его, а затем я Ctrl + F5 'ed page, и запустил console.log, и он действительно сохранил имя. – Mark

ответ

6

Если вы забыли ключевое слово var в javascript, переменная будет создана в корневом объекте. В браузере корневой объект равен window. Таким образом, вы найдете свою переменную в window.name. Если вы хотите удалить его, вы можете сделать delete window.name

EDIT: на консоли Chrome защищенный код защищен. Chrome использует другой объект, кроме window. Вы найдете свою переменную в this.name. Поэтому вы можете удалить его с помощью delete this.name.

+1

Я только что протестировал это в Chrome Dev Tools, и это не сработало для меня. – Mark

+0

Существует ли способ очистить окно insted от закрытия и открыть новую вкладку? – GoldShip

+0

См. Мое редактирование. Консоль Chrome использует другой объект, чем 'window' – Magus

5

Измените имя своей переменной, вместо этого попробуйте «myName». Поскольку вы никогда не используете ключевое слово «var», name находится в глобальной области.

Но что-то еще происходит: window.name уже принят! Поскольку у окна есть связанный с ним name. (См window.open для получения дополнительной информации)

Или лучше: В 99% случаев используют var ключевое слово, чтобы объявить переменную, остальное время, не объявить переменную (то есть window[anyVariableName] не действительно объявить переменную, вместо определения нового ключа к объекту окна, неявно доступного повсюду в контексте браузера).

Окончательный код (если вы хотите сохранить переменную name):

var name; 

function changeName() { 
    name = "Ronaldinho"; 
} 

console.log(name); // undefined 
changeName() 
console.log(name); // "Ronaldinho" 
Смежные вопросы