前端专家梦

导航

js试题1

1、如何让以下代码输出111;

if(a==1 && a==2 && a==3) {
  console.log('111');
}

解析:访问a的时候改变a的值, if条件里是==,可隐式类型转换,

var a = {
   _default: 0,
  toString: function() {
    return ++this._default;
  } 
};
console.log(a==1); // true

2、如何让以下代码输出222;

if(a===1 && a===2 && a===3) {
  console.log('222');
}

思路:访问a的时候,

  getter => 访问一个变量的时候进行拦截;

       var _a = 0;

var _default = 0;
Object.defineProperty(window, 'a', {
    get () {
        return ++_default;
     },
})

if(a===1 && a===2 && a===3) {
   console.log(222);
}
// 222

 

3、var len1 = ({} + {}).length;

var len1 = ({} + {}).length; // 30  考点:隐式类型转换
({}).toString() // "[object Object]"
{} + {}; // "[object Object][object Object]"
({} + {}).length; // 30 

 

 

4、var len2 = ([] + []).length; // 0

([]).toString() // ''
([] + []).toString()  // ''
[] + []; // ''
([] + []).length // 0

 

 

 

 5、var len3 = (function(){}).length // 0

(function(){}).length; // 0
function test() {}
test.length; // 0
function test2(1,2,3) {
console.log(arguments.length); //
arguments是实参列表}
test2.length; // 3 形参个数
test2(1,2,3,4) // console.log输出4(实参列表)

 

posted on 2021-04-24 11:31  前端女汉子一枚  阅读(47)  评论(0编辑  收藏  举报