面试题合集

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();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容