buenas...
primero vamos a desglozar el código compactado.
Código:
function k(q){""==q&&(q=" :P ");"console"in self&&"log"in console&&console.log(" \u00b7 "+q)}
// la funcion anterior es la misma que la siguiente ;
function k(q){
""==q&&(q=" :P "); // primer if del original ;
"console"in self&&"log"in console&&console.log(" \u00b7 "+q) // segundo if del original ;
}
segundo, hacer una aclaración sobre los whitespace en javascript —sin tomar en cuenta los strings. javascript no muestra tanta atención a los espacios en blancos, lo que le permite al programador escribir el código a su gusto. salvo en ciertas circunstancias, el espacio en blanco es necesario para separar algunos
token del lenguaje. particularmente, son necesarios para separar los identificaores del resto de la expresiones. es por ello que en la expresión
""==q&&(q=" :P ")
está todo junto. básicamente se puede descomponer de esta forma
"" == q && (q = " :P ")
. como ves,
q&& no es nada especial. ahí tienes una variable seguido del operador AND ( && ).
y tercero, sobre no utilizar IF.
expr && expr
es como un shorthand de un IF. en javascript, los operadores lógicos evalúan una u otra expresión según el resultado de los operandos. en el caso de AND, si el primer operando evalúa a FALSE, entonces el segundo operando no se evalúa. precisamente de ese detalle es que sale el shorthand de IF. en esencia, el primer operando es la condición del IF y el segundo operando es el cuerpo del IF.