几个JavaScript面试题
1.问题:`foo`的值是什么?
var foo = 10 + '20';
foo = 1020
2.下面的语句的返回值是什么?
"i'm a lasagna hog".split("").reverse().join("");
goh angasal a m’i
split()将字符串分割成数组
reverse()用来颠倒数组中的元素,该方法会改变原来的数组,而不会创建新的数组
join()用于把数组中的所有元素放入一个字符串中
3.`window.foo`的值是什么?
( window.foo || ( window.foo = "bar" ) );
bar
4.foo.length`的值是什么?
var foo = [];
foo.push(1);
foo.push(2);
2
5.下面代码的输出是什么?
console.log('one');
setTimeout(function() {
console.log('two');
}, 0);
console.log('three');
one
three
two
JavaScript引擎是单线程的,所有的异步事件(包括计时器,鼠标事件,一个XMLHttpRequest完成)仅当程序有缺口时才会执行,并不是我们想要它什么时候执行就可以的,所以即便我们给setTimeout设定的时间延迟为0ms,事件也不会立即触发,因为异步的关系,setTime中的回调函数并非立即执行,而是需要加入等待队列中。
还没有评论,来说两句吧...