Как понять синтаксис =!{JSON.stringify(data)}

Может ли кто-нибудь помочь мне, что делает этот небольшой фрагмент кода в JavaScript? На самом деле, я получаю данные с экспресс-сервера в форме Json, и когда я отображаю свою страницу, я хочу получить доступ к этим данным в моем клиентском JavaScript, и это решение я получил из другого вопроса в Stack Overflow (Доступ к локальным переменным Express.js в JavaScript на стороне клиента), но я не могу понять этот синтаксис.

var local_data =!{JSON.stringify(data)};

Я пытаюсь интерпретировать это, но не могу понять. Я использую handlebars в качестве механизма шаблонов.

Здравствуйте, вы уверены, что справа есть фигурные скобки {JSON.stringify(data)}?

Bhaskar Choudhary 17.02.2019 20:41

Восклицательный знак просто инвертирует результат правой части. var local_data = !false; //local_data will be true var local_data = !true; //local_data will be false

Bhaskar Choudhary 17.02.2019 20:43

Код, который вы должны, ИМХО не является исполняемым. Я пробовал это несколько раз. Не могли бы вы проверить это, пожалуйста?

Michael Czechowski 17.02.2019 20:43

вообще некорректное выражение

Code Maniac 17.02.2019 20:43

Откуда взялась эта строка, и вы уверены, что не получаете от нее ошибку? Заявление не имеет большого смысла. Если бы вы хотели создать объект, вы бы использовали JSON.parse(), а не JSON.stingify(), и в {} не было бы необходимости. Кроме того, ! перед объектом всегда будет возвращать false, пока будет создан действительный объект.

Scott Marcus 17.02.2019 20:43

! инвертирует значение истинности выражения. Так что если это true, то станет false и наоборот. Единственное использование, которое я могу себе представить, это если вы попытаетесь JSON.parse(undefined), ваш результат будет undefined, а если вы инвертируете его, он станет true. Его можно использовать для тестирования крайних случаев, если кто-то предоставляет неопределенный объект. Но есть лучшие способы сделать это... так что причина всего этого остается для меня загадочной.

Alberti Buonarroti 17.02.2019 20:48

на самом деле я получаю данные с экспресс-сервера в форме json, и я хочу получить эти данные в своем javascript на стороне клиента, для которого я пытался выполнить поиск при переполнении стека, но я получил этот тип выражения для анализа данных в клиентском javascript. но я не могу понять это. я использую руль в качестве шаблонизатора

Haroon Ali 17.02.2019 20:50

это должно быть !JSON.stringify(data)... Он интерпретирует, существует ли строковый объект data или нет. Из strigified мы имеем в виду, что data должен быть объектом, и мы приводим его к строке.

Jaspreet Singh 17.02.2019 20:50

@HaroonAli Можете ли вы отредактировать эту информацию в своем вопросе?

Brendon Shaw 17.02.2019 20:58
i want to get that data in my client side javascript ...это довольно простое и распространенное требование. Json.parse() должно быть достаточно для этого. Это превратит строку JSON в полезную переменную JavaScript. Я не знаю, что вы искали, но приведенный выше код действительно странный, если не сказать больше.
ADyson 17.02.2019 21:07

Если вы просто хотите обработать полученные данные JSON, все, что вам нужно сделать, это: let obj = JSON.parse(data);. После этого у вас будет объект JavaScript, и вы сможете делать с ним все, что захотите. Код, который вы показали, не имеет смысла.

Scott Marcus 17.02.2019 21:07

На этой странице есть много подсказок о том, что то, что вы скопировали, не является JavaSCript, например, тот факт, что люди говорят о «шаблонах Jade», ответ начинается «Использование шаблонов Jade ...». инструкции заключаются в том, чтобы поместить этот код в свой views/index.jade, а полный контекст кода — !!! 5script(type='text/javascript')var local_data =!{JSON.stringify(data)}, первые две строки которого тоже не являются JavaScript.

Raymond Chen 17.02.2019 21:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
12
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вопрос, где вы взяли это из кода, указывает на то, что код является частью шаблона Джейд. Я искал именно эту строку кода и обнаружил, что она ссылается на здесь и здесь, обе из которых также ссылаются на Jade.

Другими словами, это не действительный JavaScript, но это является действительный Jade. В данном случае !{...} — это синтаксис Jade для интерполяция неэкранированной строки.

Эквивалентом в Handlebars.js является {{{...}}}, поэтому попробуйте следующее:

var local_data = {{{JSON.stringify(data)}}};

Другие вопросы по теме