Объявление булевской переменной в JavaScript, использующем просто var

Первый шаг - переписать метод RegisterGlobalFilters, чтобы использовать jsreport в качестве веб-сервера:

public static ILocalWebServerReportingService RegisterGlobalFilters(GlobalFilterCollection filters)
{
  filters.Add(new HandleErrorAttribute()); 

  var rs = new LocalReporting()
    .Configure(cfg =>
    {
      cfg.BaseUrlAsWorkingDirectory();
      return cfg;
    })
    .UseBinary(JsReportBinary.GetBinary())
    .AsWebServer()
    .Create();

  rs.StartAsync().GetAwaiter().GetResult();

  filters.Add(new JsReportFilterAttribute(rs));

  return rs;
}

, а затем нам нужно использовать службу отчетов, на которую ссылаются, чтобы остановить работу приложения в Global.asax:

[111 ]
88
задан Joe 12 January 2012 в 05:36
поделиться

6 ответов

Типы зависят к Вашей инициализации:

var IsLoggedIn1 = "true"; //string
var IsLoggedIn2 = 1; //integer
var IsLoggedIn3 = true; //bool

, Но смотрят на этот пример:

var IsLoggedIn1 = "true"; //string
IsLoggedIn1 = true; //now your variable is a boolean

тип Ваших переменных зависит от присвоенного значения в JavaScript.

160
ответ дан Jesse Webb 24 November 2019 в 07:29
поделиться

Нет это не безопасно. Вы могли позже сделать, var IsLoggedIn = "Foo"; и JavaScript не бросят ошибку.

возможно сделать

var IsLoggedIn = new Boolean(false);
var IsLoggedIn = new Boolean(true);

, можно также передать не логическую переменную в new Boolean(), и это сделает булевскую переменную IsLoggedIn.

var IsLoggedIn = new Boolean(0); // false
var IsLoggedIn = new Boolean(NaN); // false
var IsLoggedIn = new Boolean("Foo"); // true
var IsLoggedIn = new Boolean(1); // true
19
ответ дан Ólafur Waage 24 November 2019 в 07:29
поделиться

Если Вы хотите IsLoggedIn рассматриваться как булевскую переменную, необходимо инициализировать следующим образом:

var IsLoggedIn=true;

при инициализации его с var IsLoggedIn=1; тогда, это будут рассматривать как целое число.

Однако в любое время переменная IsLoggedIn могла относиться к другому типу данных:

 IsLoggedIn="Hello World";

Это не вызовет ошибку.

7
ответ дан Peter Mortensen 24 November 2019 в 07:29
поделиться

Вы можете использование и тестировать неинициализированные переменные, по крайней мере, на их 'definedness'. Как это:

var iAmNotDefined;
alert(!iAmNotDefined); //true
//or
alert(!!iAmNotDefined); //false

, Кроме того, существует много возможностей: если Вы не интересуетесь точным использованием типов '==' оператор (или! [переменная]/!! [переменная]) для сравнения (именно это Douglas Crockford называет 'truthy' или 'falsy', я думаю). В этом случае присвоение верного или 1 или '1' к unitialized переменной всегда возвращает true при выяснении. Иначе [если Вам нужно безопасное с точки зрения типов сравнение], используют '===' для сравнения.

var thisMayBeTrue;

thisMayBeTrue = 1;
alert(thisMayBeTrue == true); //=> true
alert(!!thisMayBeTrue); //=> true
alert(thisMayBeTrue === true); //=> false

thisMayBeTrue = '1';
alert(thisMayBeTrue == true); //=> true 
alert(!!thisMayBeTrue); //=> true
alert(thisMayBeTrue === true); //=> false
// so, in this case, using == or !! '1' is implicitly 
// converted to 1 and 1 is implicitly converted to true)

thisMayBeTrue = true;
alert(thisMayBeTrue == true); //=> true
alert(!!thisMayBeTrue); //=> true
alert(thisMayBeTrue === true); //=> true

thisMayBeTrue = 'true';
alert(thisMayBeTrue == true); //=> false
alert(!!thisMayBeTrue); //=> true
alert(thisMayBeTrue === true); //=> false
// so, here's no implicit conversion of the string 'true'
// it's also a demonstration of the fact that the 
// ! or !! operator tests the 'definedness' of a variable.

пз: Вы не можете протестировать 'definedness' на несуществующие переменные все же. Так:

alert(!!HelloWorld);

дает ссылочную Ошибку ('HelloWorld, не определяется')

(там лучшее слово для 'definedness'? Простите моему нидерландскому языку так или иначе; ~)

5
ответ дан KooiInc 24 November 2019 в 07:29
поделиться

Переменные в JavaScript не имеют типа. Ненулевой, непустой, непустой и true "верны". Нуль, пустая, неопределенная, пустая строка и false являются "ложью".

существует булев тип, хотя, как литералы true и false.

2
ответ дан Eugene Morozov 24 November 2019 в 07:29
поделиться

Переменная станет тем, что когда-либо вводит Вас, присваивают его. Первоначально это undefined. При присвоении его 'true', это станет строкой при присвоении его true, это станет булевской переменной при присвоении его 1, это станет числом. Последующие присвоения могут изменить тип переменной позже.

1
ответ дан AnthonyWJones 24 November 2019 в 07:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: