2014-10-13 3 views
-1

Я знаю, как использовать «?» тернарный оператор. window.URL должно быть выражением, которое должно возвращать true или false. Но в этом случае он возвращает строку.использование тернарного оператора в javascript

как оценивается это выражение.

var createSrc = window.URL ? window.URL.createObjectURL : function(stream) {return stream;}; 
+1

Тернарный оператор работает следующим образом: тест? ВыражениеIfTrue: выражениеIfFalse. Каков тест, который вы хотите выполнить в окне .URL? – Superdrac

+0

Но 'window.URL' не является выражением, которое дает вам« true »или« false ». Это объект и, следовательно, всегда будет «истинным». –

+0

Также вы можете пояснить, что вы подразумеваете под словом «он возвращает строку». * Что * возвращает строку? Что это за значение строк? –

ответ

2

Строка оценивается в true, пока оно не пусто, и в этом случае это false.

Хотя это не выглядит window.URL является строкой в ​​этом случае. Кажется, это объект, который, если undefined будет также оцениваться до false.

Что вы делаете, это проверка, существует ли window.URL. Если да, то он назначит createSrc, значение window.URL.createObjectURL, которое, я полагаю, вероятно является функцией. В противном случае он назначит третью часть тройного оператора, function(stream) {return stream;}.

Это значит, что createSrc всегда должно быть функцией, и вызов его не приведет к возникновению ошибки.