面试题合集

a == 1 && a == 2 && a == 3 true

  • a[Symbol.toPrimitive] = () => {} i++ 也可以重写valueOf或者toString
// 也可以利用数组灵活返回不同的值
const a = {
  i: 1,
  toString: function () {
    return this.i++;
  }
}
const a = [1, 2, 3];
a.toString = a.shift;
  • ES6数据劫持 defineProperty

[27.2, 0, '0013', '14px', 123].map(parseInt)

[27, NaN, 1, 1, 27] 注意radix和进制转换

let result = 100 + true + 21.2 + null + undefined + "Tencent" + [] + null + 9 + false

结果:NaNTencentnull9false

  • Number(undefined)等于NaN,NaN与其它值计算结果也为NaN
  • +两边都有值,有一边出现字符串或者对象,则为字符串拼接

赋值从右到左,但是 a.x 优先级比较高先执行

var a = {
  n: 1,
}
var b = a;
a = a.x = {
  n: 2,
}
console.log(a.x); // undefined
console.log(b); // { n: 1, x: { n: 2 } }

函数执行的上级上下文和函数在哪执行的没关系,只和它的作用域有关系(作用域由创建函数时候的上下文来决定)

var i = 0;
function A() {
  var i = 10;
  function x() {
    console.log(i); // 10
  }
  return x;
}
var y = A();
y();
function B() {
  var i = 20;
  y();
}
B();

你可能感兴趣的:(面试题合集)