Хотя я знаком с концепцией assert
, я не знал, что JavaScript обладает такой функциональностью. Имея это в виду, я могу быть совершенно неправ, но мне кажется, что это утверждение:
assert (foo.x || valueIfXIsNotDefined) === undefined;
... вызывает функцию с именем assert()
, передает ей параметр foo.x || valueIfXIsNotDefined
, а затем сравнивает возвращаемое значение из функции assert()
с undefined
. Возможно, что вам нужно, это:
assert(foo.x || valueIfXIsNotDefined === undefined);
Если я попробую что-то похожее с console.log()
:
var foo = "",
valueIfXIsNotDefined = "test";
console.log( foo.x === undefined);
console.log(foo.x || valueIfXIsNotDefined === undefined);
Тогда записывается:
true
false
Аналогично, после:
var result = foo.x || valueIfXIsNotDefined;
result
- это "test"
.
http://jsfiddle.net/YBPyw/
Кроме того, если вы на самом деле попытаетесь присвоить foo.x
равное чему-либо (где foo
была строкой), это не сработает, поэтому при последующем тестировании foo.x
это даст undefined
.