Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.05.2018, 17:17
Интересующийся
Отправить личное сообщение для AkezhanOb1 Посмотреть профиль Найти все сообщения от AkezhanOb1
 
Регистрация: 28.09.2017
Сообщений: 20

Почему splice не удаляет элемент
почему когда массив стоит внутри setInterval - a splice не удаляет элемента, а когда выводишь массив как глобальную перемену, все работает идеально?
var check = true

setInterval(function() {
  while(check) {
  var answ = prompt("What would you like to do?")
  var listAll = ["js", "node", "vue"]
  if(answ === "list") {
    listAll.forEach(function(el,pos,arr) {
      console.log(pos + ": " + el)
    })
  }if(answ === "quit"){
    check = false
   }if(answ === "del") {
     let pos = prompt("enter post") 
     listAll.splice(pos, 1)
   }
 }
},2000)


но стоит убрать объявление var listAll = ["js", "node", "vue"] в самое начало то все ок
var check = true
var listAll = ["js", "node", "vue"]
setInterval(function() {
  while(check) {
  var answ = prompt("What would you like to do?")
  if(answ === "list") {
    listAll.forEach(function(el,pos,arr) {
      console.log(pos + ": " + el)
    })
  }if(answ === "quit"){
    check = false
   }if(answ === "del") {
     let pos = prompt("enter post") 
     listAll.splice(pos, 1)
   }
 }
},2000)
Пожалуйста когда выводит prompt впишите с начало list а потом del и номер элемента
Ответить с цитированием
  #2 (permalink)  
Старый 08.05.2018, 17:27
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

AkezhanOb1,
Удаляет, а при следующем проходе в цикле while снова восстанавливается.
Ответить с цитированием
  #3 (permalink)  
Старый 08.05.2018, 17:39
Интересующийся
Отправить личное сообщение для AkezhanOb1 Посмотреть профиль Найти все сообщения от AkezhanOb1
 
Регистрация: 28.09.2017
Сообщений: 20

почему восстанавливает? разве это не ссылочный и мы сразу удаляем с массива а не с его копии?
Ответить с цитированием
  #4 (permalink)  
Старый 08.05.2018, 17:57
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике на элемент, изменять значение поля Apelcun77 Общие вопросы Javascript 2 14.02.2014 15:26
Как узнать родительский элемент? alex_han Events/DOM/Window 6 06.12.2013 23:01
Выбрать элемент у родителя которого сын это элемент по которому кликнули MalikSPB Events/DOM/Window 8 30.12.2012 12:22
Кодировка при использовании Ajax Nichloas AJAX и COMET 9 17.09.2009 16:06
почему не удаляется динамически созданный элемент? magistr_bender Элементы интерфейса 5 15.09.2008 19:52