2016-09-20 4 views
1

я наткнулся на эту строку:JavaScript && оператора, если заявление

if((x = myFunction(y)) && x.length) { 
    //do something 
} 

x.length выражение означает, что в этой ситуации? Означает ли это, что x.length! = 0?

+0

yup 'x.length' имеет значение' x' не равно с '0' –

+1

@FadhlyPermata спасибо –

+0

Это зависит от того, что такое' x'. 'x.length' может быть чем угодно, но обычно это числовое свойство, заданное массивами и подобными массиву объектами, но' length' может быть как угодно. – adeneo

ответ

1

Да. 0 является значением «ложного», поэтому if(x.length) и if(x.length != 0) будут делать то же самое

0

if (x.length) может означать одно из следующего для программиста.

if (x.length != 0) 
if (x.length != null) 
if (x.length != false) 

Я хотел бы представить, для переводчика все это было бы

if (x.length != 0) 

Пожалуйста, поправьте меня, если я ошибаюсь.

+1

x.length также может быть неопределенным - и оценил бы как falsey – user2182349

+0

«Пожалуйста, исправьте меня, если я ошибаюсь». --- стандарт объявляет, что 'ToBoolean' вызывается в результате выражения, который определяется как http://www.ecma-international.org/ecma-262/6.0/#sec-toboolean. Это немного отличается от того, ! = 0' – zerkms

+0

Спасибо @ user2182349. Забыли это! –

Смежные вопросы