本人对js掌握特别不好 所以总结一下 以后面试能成功解答
1、
const arr = ['', [], null, -0.06, '0', NaN, function(){}];
let sum = 0;
for(let index = 0; index < arr.length; index++) {
if(arr[index]) {
console.log(arr[index]);
sum++;
}
}
console.log(sum++); // 4
- 这道题写错是因为对条件认识不完整, 这里面之所以为4 是因为[]、-0.06、 '0'、function(){} 都为true 符合条件 不知道为什么?都为空了,为什么还能为true?? 有知道的请在评论处解释一下 谢谢
2、
for(var a = 1,b = 2;a < 5,b < 4; a++, b++) {
}
console.log(a, b); // 3 4
console.log(++a , b++); // 8
- 这道题本不应该做错,但是自己想多了结果也错了, 因为之前自己做过类似的,如果 b = 4时 条件不在允许,a 也就不再继续增加,但是凭着之前的结果好像不是这样,a继续增加了,就又错了。实在是觉得自己苦逼到逗比,已经无人可救。
3、
let h = 1;
var k = 2;
function fn() {
console.log(this.h);
console.log(this.k);
}
const obj = {
h: 'ok',
k: '100',
fn
}
obj.fn(); // OK 100
const f = obj.fn;
f(); // undefined 2
- 这道题做错是最后一个错了,f() 的结果写成了 1 2
从这个例子中发现了一个现象 变量的提升和作用域 看下面的例子
4、
var vx = 229;
(function() {
console.log(vx); // 229
})()
// 下面的例子
var vx = 229;
(function() {
console.log(vx); // undefined
var vx = 555;
})()
为什么函数里在声明一次vx 打印的就是undefined 什么原理??
好像是这样的···
就相当于
var vx = 229;
(function() {
var vx; //declaration hoisting
console.log(vx); // undefined
vx = 555;
})()
难道这就是传说中的变量的提升···在function的域中 变量vx的声明被提升了,真是费解了我多年
`
网友评论