通过面试题学JavaScript知识

Posted qqfontofweb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过面试题学JavaScript知识相关的知识,希望对你有一定的参考价值。

// a 是多少的时候 可以让下面的打印ok
if(a == 1 && a == 2 && a ==3){
  console.log(‘ok‘)  
}

  分析1:

    == 比较,如果左右左右两边数据类型不一样  对象 == 字符串  把对象转为字符串,剩下的情况都要转数字

 

  分析2:

    基本数据类型转数字,默认隐式调用Number()来处理,所以此处a必定不能是基本数据类型

 

  分析3:

   对象转数字;先转为字符串(先调用valueOf ,获取原始值,如果原始值不是基本类型,继续调用toString ),然后把字符串转数字 

    所以答案有以下三种

  

var a = {
  i:1,
  valueOf(){
    return this.i++
  }
}

  第二种

var a = [1,2,3]
a.toString = a.shift;
// 当a去比较的时候,一定会调用toString方法, 我现在让他执行shift 每次都去取数组第一项

第三种 使用Object.defineProperty

// 使用数据劫持
var i = 1
Object.defineProperty(window, ‘a‘, {
   get() {
       return i++
    } 
})

  

  

 

以上是关于通过面试题学JavaScript知识的主要内容,如果未能解决你的问题,请参考以下文章

做题学知识之 Event Loop

《前端内参》,有关于JavaScript、编程范式、设计模式、软件开发的艺术等大前端范畴内的知识分享,旨在帮助前端工程师们夯实技术基础以通过一线互联网企业技术面试。

常用Javascript代码片段集锦

你可能不知道的JavaScript代码片段和技巧(下)

你可能不知道的JavaScript代码片段和技巧(上)

前端事件绑定知识点(面试常考)