1. What does the following code output?

let num = 0; let num2 = 1; let str = '2hello'; let str2 = '02'; let bool = true; let arr = [1, 2, 3]; Let float = 1.1; Let float2 = 2.1; let obj = { name: 'wyt', valueOf: function() { return -1; }}; console.log(num++); console.log(++num); console.log(num); console.log(++num2 + num2); console.log(++str); console.log(++str2); console.log(bool--); console.log(arr++); console.log(--float); console.log(--float2); console.log(obj--);Copy the code

Output: 0, 2, 2, 4, NaN, 3, 1, NaN, 0.10000000000000009, 1.1, -1

2. What does the following code output?

let a = null;
let b = undefined;
console.log(++a);
console.log(++b);
console.log(++null);
Copy the code

Output: 1, NaN, // Uncaught SyntaxError

3. What does the following code output?

console.log(true || wyt); console.log(! Infinity); let num = 1; console.log(--num && 8); let num2 = 0; console.log(++num2 && 8); console.log(true || false && false); console.log(true && wyt);Copy the code

Output: true, false, 0, 8, true ReferenceError: WYt is not defined

4. What does the following code output?

console.log(NaN * 0);
console.log(Infinity * 0);
console.log(Infinity * 1);
console.log(Infinity * Infinity);
console.log(Infinity / Infinity);
console.log(0 / 0);
console.log(10 / 0);
Copy the code

Output: NaN, NaN, Infinity, Infinity, NaN, NaN, Infinity

5. 写累了,问题同上0.0

console.log(Infinity + Infinity);
console.log(-Infinity + -Infinity);
console.log(Infinity + -Infinity);
console.log(-0 + -0);
console.log(+0 + +0);
console.log(+0 + -0);
console.log(1 + undefined);
console.log(1 + {});
console.log(1 + []);
console.log(typeof 1 + []);
console.log([1, 2] + [2, 1]);
console.log('a' + + 'b');
console.log('a' + + '2');
Copy the code

Output: Infinity, -infinity, NaN, -0, 0, 0, NaN, ‘1[object object]’, ‘1’, ‘number’, ‘1,22,1’, ‘aNaN’, ‘A2’

The above 6.

console.log(Infinity - Infinity);
console.log(-Infinity - -Infinity);
console.log(Infinity - -Infinity);
console.log(-Infinity - Infinity);
console.log(-0 - -0);
console.log(+0 - +0);
console.log(-0 - +0);
console.log(1 - {});
console.log(1 - []);
console.log(typeof (1 - []));
Copy the code

Output: NaN, NaN, Infinity, -infinity, 0, 0, -0, NaN, 1, ‘number’

7….

console.log('Blue' < 'aliceblue');
console.log('23' < '3');
console.log('23' < 3);
console.log('a' < 3);
console.log(NaN > 3);
console.log(NaN <= 3);
console.log({} < {});
console.log({} > {});
console.log({} <= {});
console.log({} >= {});
Copy the code

Output: true, true, false, false, false, false, false, false, false, false, true, true

8….

console.log(NaN == NaN); console.log(NaN ! = NaN); console.log({} == ! {}); console.log({} == {}); console.log(null == undefined); console.log(undefined == 0); console.log(undefined == 'undefined'); console.log(null == 0);Copy the code

Output: false, true, false, false, true, false, false, false

9….

console.log((1, 2, 4, 6, 8));
Copy the code

Output: 8

10. Other questions

console.log(++[[]][+[]]+[+[]]); console.log([] ! = []); console.log([] == ! []); The console. The log (false && true | | false && true) how to make a = = 1 & & & & a = = a = = 2 3 return true?Copy the code

Output: ’10’, true, true, false

<! --// [] converts to true and inverts to false--> <! --[] == false--> <! --[] == ToNumber(false)--> <! - [] = = 0 -- > <! --ToPrimitive([]) == 0--> <! --// [].toString() -> ''--> <! - '= = 0 -- > <! --0 == 0 // -> true-->Copy the code

11. Add and subtract with bitwise operators (integers)

<! --> function add (a, b) {let carry, num; do { num = a ^ b; carry = (a & b) << 1; a = num; b = carry; } while (carry ! = 0); return num; } <! Subtract (a, b) {return add(a, add(~b, 1)); }Copy the code