JavaScript (ExtendScript): Неожиданная оценка «null» в качестве второго операнда в логических операциях

#javascript #extendscript #ecmascript-3

Вопрос:

Используя движок ES3 (Adobe Illustrator CS6), я только что столкнулся с неожиданной проблемой, связанной с тем, что «null», по-видимому, вычисляется, когда это второй операнд AND или OR. Все приведенные ниже выражения должны возвращать «null» (но вместо этого возвращают комментарии).

 alert( true amp;amp; null );  // true
alert( 1 amp;amp; null );  // undefined
alert( "1" amp;amp; null );  // undefined
alert( false || null );  // false
alert( 0 || null );  // undefined
alert( "" || null );  // undefined
 

Насколько я могу судить, это не ожидаемое поведение даже в ES3. «null», по-видимому, оценивается как ожидаемое, когда это первый операнд. Быстрый поиск в Google мало что дал.

Можно ли как-нибудь это объяснить?

Заранее спасибо.