Этот код выполнит вашу потребность:
FileWriter fw=new FileWriter("C:\\file.json",true);
fw.write("ssssss");
fw.close();
Если вы передаете переменную в функцию, она оценивается и выдает ошибку, поскольку такой переменной нет. Напротив, в вашем базовом представлении вы обращаетесь к свойству объекта объекта, который будет всегда работать (и возвращать значение undefined
, если свойства с таким именем не существует).
Вместо этого вам придется использовать оператор typeof
, который будет работать даже для необъявленных переменных (посмотрите на переменную === undefined против переменной typeof === & quot; undefined & quot; и JavaScript проверяет, существует ли переменная (определена / инициализирована) ):
<select id="libraryPreps"><%
if (typeof libraryPreps !== "undefined") {
_.each(libraryPreps, function (libraryPrep) { %>
<option value="<%=libraryPrep.id%>"><%= libraryPrep.name %></option><%
});
}
%></select>
Чтобы использовать _.isUndefined
в вашем шаблоне, вам нужно сделать значение явно доступным в шаблоне. Из документов :
По умолчанию
template
помещает значения из ваших данных в локальную область с помощью оператораwith
. Однако вы можете указать одно имя переменной с настройкойvariable
. Это может значительно повысить скорость, с которой шаблон может отображаться._.template("Using 'with': <%= data.answer %>", {answer: 'no'}, {variable: 'data'}); => "Using 'with': no"
Таким образом, вы можете написать шаблоны так:
<% if (!_.isUndefined(data.libraryPreps)) { %> …
<% if ("libraryPreps" in data) { %> …
У меня была похожая проблема, я нашел следующее решение:
Вместо: if (typeof libraryPreps !== "undefined") {
Использование: if (!_.isUndefined(obj.libraryPreps)) {
Я знаю, что это связано со старым потоком. Но эта проблема все еще остается активной.
Я создал решение для своего собственного стека. Может быть полезным для других программистов.
Этот код проверяет, являются ли переменные неопределенными или нулевыми. В случае, если переменные не определены или имеют значение null, возвращается имя переменной. (С синтаксисом шаблона).
Это изменение проверено на underscorejs v1.6.0. С небольшими изменениями это будет работать до 1.9.1. Далее смотрим на Лодаш. Это будет работать с незначительными корректировками!
В сборке разработчика подчеркивания:
v1.6.0 правило: 1239
Правило более новых версий: 1575
Старый код:
if (escape) {
source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
}
if (interpolate) {
source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
}
if (evaluate) {
source += "';\n" + evaluate + "\n__p+='";
}
Новый код:
if (escape) {
source += "'+\n((typeof " + escape + " === \"undefined\" || " + escape + " === null) ? \"<%-" + (escape.toString()) + "%>\": _.escape(" + escape + "))+\n'";
}
if (interpolate) {
source += "'+\n((typeof " + interpolate + " === \"undefined\" || " + interpolate + " === null) ? \"<%=" + (interpolate.toString()) +"%>\":" + interpolate + ")+\n'";
}
if (evaluate) {
source += "';\n" + evaluate + "\n__p+='";
}