!0; // true
!'Hello'; // false
논리합(||) 또는 논리곱(&&) 연산자 표현식의 평가 결과는 불리언 값이 아닐 수도 있다.
논리합(||) 또는 논리곱(&&) 연산자 표현식은 언제나 2개의 피연산자 중 어느 한쪽으로 평가된다.
'Cat'; && 'Dog'; //'Dog'
var x,y,z;
x = 1, y = 2, z = 3; // 3
typeof '' // string
typeof 1 // number
typeof NaN // number
typeof true // boolean
typeof undefined // undefined
typeof Symbol() // symbol
typeof null // object
typeof [] // object
typeof {} // object
typeof new Date() // object
typeof /test/gi // object
typeof function () {} // function
typeof 연산자로 null 값을 연산하면 null이 아닌 , object를 반환하기 때문에 사용에 주의해야 한다.
이것은 자바스크립트의 첫 번째 버전의 버그지만 , 기존 코드에 영향을 줄 수 있기 때문에 수정되지 못하고 있다. 따라서 값이 null 타입인지 확인할때엔 typeof 연산자보다 일치 연산자를 사용하는 것이 좋다.
2 ** 2; // 4
2 ** 2.5 // 5.65685424949238
2 ** 0; // 1
2 ** -2; // 0.25
지수 연산자의 결합 순서는 우항에서 좌항이다.
2 ** ( 3 ** 2 ); // 512
음수를 거듭제곱의 밑으로 사용해 계산하려면 괄호로 묶어야 한다.
-5 ** 2;
// SyntaxError: Unary operator used immediately before exponentiation expression
// Parenthesis must be used to disambiguate operator precedence
(-5) ** 2; // 25
지수 연산자는 다른 산술 연산자처럼 할당 연산자랑 함께 사용할 수 있다.
지수 연산자는 이항 연산자 중에서 우선순위가 가장 높다
var num = 5;
num **= 2; // 25
2 * 5 ** 2; // 50
//5의 2제곱 x 2
var o = { a : 1 };
delete o.a;
console.log(o); // {}
// delete 연산자는 객체의 프로퍼티를 삭제하는 부수 효과가 있다. 이는 o 객체를 사용하는 다른 코드에 영향을 준다
이웅모.2006.모던 자바스크립트 Deep Dive.위키북스