Объявление функции и выражение функции, присваиваемое переменной, ведут себя одинаково после установления привязки.
Однако существует , как и , когда объект функции фактически связан с его переменной. Это различие связано с механизмом, называемым изменением подъема в JavaScript.
В принципе, все объявления функций и объявления переменных поднимаются в начало функции в котором происходит объявление (поэтому мы говорим, что JavaScript имеет область функций ).
undefined
в начале тела функции и будет присвоена значение в исходном месте в коде. (На самом деле ему будет присвоено значение в в каждом месте, где появляется объявление переменной с тем же именем.) Порядок подъема также важен : объявления функций имеют приоритет над объявлениями переменных с тем же именем, а последнее объявление функции имеет приоритет над предыдущими объявлениями с таким же именем.
Некоторые примеры ...
var foo = 1;
function bar() {
if (!foo) {
var foo = 10 }
return foo; }
bar() // 10
Переменная foo
поднимается в начало функции, инициализируется на undefined
, так что !foo
является true
, поэтому foo
назначается 10
. foo
вне области bar
не играет никакой роли и нетронутой.
function f() {
return a;
function a() {return 1};
var a = 4;
function a() {return 2}}
f()() // 2
function f() {
return a;
var a = 4;
function a() {return 1};
function a() {return 2}}
f()() // 2
Объявление функций имеет приоритет над объявлениями переменных, а последнее объявление функции «прилипает».
function f() {
var a = 4;
function a() {return 1};
function a() {return 2};
return a; }
f() // 4
В этом примере инициализируется a
с результатом функции от оценки объявления второй функции, а затем назначается 4
.
var a = 1;
function b() {
a = 10;
return;
function a() {}}
b();
a // 1
Здесь объявление функции сначала открывается, объявляя и инициализируя переменную a
. Затем этой переменной присваивается 10
. Другими словами: присваивание не присваивается внешней переменной a
.
Знак =
закодирован на \u003d.
. Поэтому вам нужно использовать disableHtmlEscaping () .
Вы можете использовать
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String s2 = gson.toJson(hm.toString());
Для \/
, обращающегося к проблеме \\/
, решение
s2.replace("\\\\", "\\");
Поскольку некоторым людям нравится nitpick, я добавлю ответ на вопрос (хотя он уже был дан ответ и выбран как правильный ответ) ...
Я согласен с выбранным ответом на этот вопрос, используйте следующий код:
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String s2 = gson.toJson(hm.toString());
s2.replace("\\\\", "\\");
@Bajrang Hudda спросил о\n ... Недавно я ударил этот вопрос ... Я смог его решить, используя:
Gson gson = new Gson();
String json = (gson.toJson(data)).replaceAll("\\\\n", "\\n");