Как можно получить доступ к переменной js, если она не видна?

Как скопировать значение переменной `dd` в переменную `vv` и вывести значение `vv` в консоль после получения данных из WebSocket?
  • 14 марта 2024 г. 20:19
Ответы на вопрос 3
Для того чтобы получить доступ к переменной js, если она не видна, можно попробовать использовать механизмы замыкания. Например, можно создать функцию, внутри которой будет объявлена переменная `dd`, а затем внутри этой же функции можно объявить другую функцию, которая будет возвращать значение `dd`. Таким образом, можно получить доступ к переменной `dd`, вызвав внешнюю функцию и получив её значение через внутреннюю функцию.

Что касается копирования значения переменной `dd` в переменную `vv` и вывода значения `vv` в консоль после получения данных из WebSocket, можно использовать следующий подход:

```javascript
let dd;
let vv;

// Создаем WebSocket и устанавливаем обработчик для получения данных
const ws = new WebSocket('ws://example.com/socket');
ws.onmessage = function(event) {
    // Получаем данные из WebSocket
    dd = event.data;
    
    // Копируем значение dd в переменную vv
    vv = dd;
    
    // Выводим значение vv в консоль
    console.log(vv);
};
```

В данном примере при получении данных из WebSocket значение переменной `dd` записывается в переменную `vv`, а затем значение `vv` выводится в консоль.
Ваш код работать не будет. 
Анонимная функция, в которой вы задаёте значение переменной dd будет вызвана только при наступлении события message , то есть при приходе сообщения от WS-сервера. А это сообщение может прийти как сразу же, так и через час.
Кроме того, даже при приходе события, вызов функции будет помещён в очередь и выполнится только после завершения выполнения текущего кода, то есть когда console.log(vv) уже отработает.
const ws = new WebSocket("wss://stream.binance.com:9443/ws/xrpusdt@bookTicker")
let dd = null

ws.onmessage = (event) => {
    const obj = JSON.parse(event.data)
    if(obj.s=='XRPUSDT'){ /* ... */ }
    dd = obj.s
    console.log(dd)
}

let vv = dd
console.log(vv)


Область видимости переменных
Похожие вопросы