Может ли кто-нибудь помочь мне, что делает этот небольшой фрагмент кода в JavaScript? На самом деле, я получаю данные с экспресс-сервера в форме Json, и когда я отображаю свою страницу, я хочу получить доступ к этим данным в моем клиентском JavaScript, и это решение я получил из другого вопроса в Stack Overflow (Доступ к локальным переменным Express.js в JavaScript на стороне клиента), но я не могу понять этот синтаксис.
var local_data =!{JSON.stringify(data)};
Я пытаюсь интерпретировать это, но не могу понять. Я использую handlebars в качестве механизма шаблонов.
Восклицательный знак просто инвертирует результат правой части. var local_data = !false; //local_data will be true var local_data = !true; //local_data will be false
Код, который вы должны, ИМХО не является исполняемым. Я пробовал это несколько раз. Не могли бы вы проверить это, пожалуйста?
вообще некорректное выражение
Откуда взялась эта строка, и вы уверены, что не получаете от нее ошибку? Заявление не имеет большого смысла. Если бы вы хотели создать объект, вы бы использовали JSON.parse(), а не JSON.stingify(), и в {} не было бы необходимости. Кроме того, ! перед объектом всегда будет возвращать false, пока будет создан действительный объект.
! инвертирует значение истинности выражения. Так что если это true, то станет false и наоборот. Единственное использование, которое я могу себе представить, это если вы попытаетесь JSON.parse(undefined), ваш результат будет undefined, а если вы инвертируете его, он станет true. Его можно использовать для тестирования крайних случаев, если кто-то предоставляет неопределенный объект. Но есть лучшие способы сделать это... так что причина всего этого остается для меня загадочной.
на самом деле я получаю данные с экспресс-сервера в форме json, и я хочу получить эти данные в своем javascript на стороне клиента, для которого я пытался выполнить поиск при переполнении стека, но я получил этот тип выражения для анализа данных в клиентском javascript. но я не могу понять это. я использую руль в качестве шаблонизатора
это должно быть !JSON.stringify(data)... Он интерпретирует, существует ли строковый объект data или нет. Из strigified мы имеем в виду, что data должен быть объектом, и мы приводим его к строке.
@HaroonAli Можете ли вы отредактировать эту информацию в своем вопросе?
i want to get that data in my client side javascript ...это довольно простое и распространенное требование. Json.parse() должно быть достаточно для этого. Это превратит строку JSON в полезную переменную JavaScript. Я не знаю, что вы искали, но приведенный выше код действительно странный, если не сказать больше.
Если вы просто хотите обработать полученные данные JSON, все, что вам нужно сделать, это: let obj = JSON.parse(data);. После этого у вас будет объект JavaScript, и вы сможете делать с ним все, что захотите. Код, который вы показали, не имеет смысла.
На этой странице есть много подсказок о том, что то, что вы скопировали, не является JavaSCript, например, тот факт, что люди говорят о «шаблонах Jade», ответ начинается «Использование шаблонов Jade ...». инструкции заключаются в том, чтобы поместить этот код в свой views/index.jade, а полный контекст кода — !!! 5script(type='text/javascript')var local_data =!{JSON.stringify(data)}, первые две строки которого тоже не являются JavaScript.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вопрос, где вы взяли это из кода, указывает на то, что код является частью шаблона Джейд. Я искал именно эту строку кода и обнаружил, что она ссылается на здесь и здесь, обе из которых также ссылаются на Jade.
Другими словами, это не действительный JavaScript, но это является действительный Jade. В данном случае !{...} — это синтаксис Jade для интерполяция неэкранированной строки.
Эквивалентом в Handlebars.js является {{{...}}}, поэтому попробуйте следующее:
var local_data = {{{JSON.stringify(data)}}};
Здравствуйте, вы уверены, что справа есть фигурные скобки {JSON.stringify(data)}?