记录一下面试题

相当不错的面试题

 []['map']+[1,2,3]
 这个题考的是隐式类型转换 当+与字符串跟 引用类型相遇的时候会全部转成字符串
[]['a']+[1,[2,3]]
这个题考的是数组降维一旦数组转换成字符串就会直接编程字符串数组就没了 
其实+-都是触发隐式类型转换的条件就比如+true1 那么-true 就是-1 不要被
思维禁锢
 []['push'](1)
 这个的返回值是数字1 并不是[1]因为push 的返回值是改变后的数组长度
(![]+[])[+[]]
 这个先算括号里面的空数组去反是false +号触发 字符串拼接就会变成字符串false 一个
 空数组+号就会变成数字0 所以会变成(![]+[])[0] 也就是取字符串false[]0 也就是字符串f 
![]+[])[+!![]]
这个题考的是对于true遇到+ 号的情况这种情况下是1 所以输出a
++[[]][+[]]+[+[]]10 化简后 变成了 1 + [0]  数组降维变成了字符串10
parseInt(1010110,2) 这个的第二个用法就是第一个参数是value 第二个是进制
所以这是就是二进制的1010110 转成10 进制
 let  a  = {},
      b = {key:'b'},
      c = {key:'c'};
		    a[b] = 123;
		    a[c] = 456;
		    console.log( a[b])

    //将一个对象转换成字符串会触发隐式类型转换对象就会变成object object
    //而在数组添加两个相同得对象会向下覆盖 所以就是456 非常得套路
 var arr =[1,3,5,7,9];
  function Fn() {
      this.arr = [2,4,6,8,10];
      arr.forEach(function () {
          console.log(this.arr)
      })
  }
  new Fn()
  像这种题看到就一定要小心 首先要看好arr 跟this.arr 然后要注意的是看回掉函数内如果是function 函数 则内部this全部指向window 但是如果箭头函数则指向函数内部
function text() {
        var n = 4399;
            function add() {
               n++
               console.log(n)
            }
            return{
                add,n
            }
    }
    var result1 = text();

    result1.add();
    result1.add();
    console.log(result1.n)
    var result2 = text();
    这个注意n  n 是被赋值是抛出来得没有参加后面得运算所以还是 4399
 var out = 10;
    var inner ={
        out:25,
        func:function () {
            var out = 15;
                 return this.out
        }
    };
          
            console.log((inner.func = inner.func)())
            
            对象内得函数一旦参与运算那么内部this 就会指向window 就比如,号运算符=号这种
 	  console.log("4" - "3")
 	当我面对这种题首先就要剖析-号运算符在进行运算的时候做了什么,那么当我们看到-号运算符的时候,
 	一这个题为例,减号运算符会对左右双方数值进行进行 Number()这个函数那么这个例题就可以理解为,
 	 Number(4) - Number(3) 所以这个最终答案是 数值类型1,那么举一反三的来说想要彻底知道-号
 	 可以做什么,首先就要知道 Number() 对不同类型的转换都会有哪些返回值就好,如此我做了一下的尝试
 	1 console.log( Number([]) ) 当值为空数组时值为 0 这是因为空数组为false 所以值为02 console.log( Number([1])) 当数组第一个下标有值时,值为数字或者字符串且值不为0时
 	(字符串必须是数字)都可以正常转换出来,当然有一个例外第一个下标为0 则论写多少都是0比如 
 	 number([000000000000]) 数值都为0 ,返过来值为 number([1223331])
 	 或者 number(["123123213"])都可以进行转换,	Number([1,2]) 那么只要超出一个下标不论是任何值
 	 都是NaN 还有一种情况就是 Number([{a:"1"}]) 第一个下标为对象时 也时无法转换的贼为NaN
 	3 那么当值为 Number('a')由于无法转换所致全部都是NaN 无论是只有一个还是多个。 
 	4 那么当值为 Number({a:""}) 无论有没有值都为NaN'         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值