今天给大家分享一些面试题,以及我个人的见解,话不多说,上题!
var person={fname:"John",lname:"Doe",age:25};
var txt="";
for (x in person){
txt= txt + x+ person[x];
}
alert(txt);
输出为?
person是一个对象,对象的遍历是遍历它的下标,所以x指的便是对象中的
fname,lname,age。
而对象有又是以关联数组的形式来访问里面的值,就是person[x],而不是person.x
所以txt是下标和值的相加
最后输出的是:
fnameJohnlnameDoeage25
var a =100;
function f(){
var a = 200;
function g(){
return a;
}
return g;
}
console.log(f()());
题目要求输出f()(),注意是两次执行
第一次执行:
var a = 200;
function g(){
return a;
}
return g;
返回函数g,第二次执行:
调用函数g,return a,这是返回的a是f函数中的a,因为它沿着
作用域链找a的话,f函数里面刚好有,不会去window里面找的,所以输出结果为
200
Object.prototype.bar = 1;
var foo = {moo : 2};
for(var i in foo){
console.log(i);
}
输出的i为:moo bar
数组对象原型中有bar,遍历的话也会遍历到原型中,这是遍历的特性
所以输出为moo bar
列出display常用的值,说明他们的作用
none 隐藏元素,并且不占据原来的空间
block 像块级元素一样显示
inline-block 像行内块一样像是
inline 行内元素
list-item 像会计元素一样显示,并且添加样式列表标记
CSS选择器有哪些?请举例并写出权重值
id 100
class 10
标签 1
通用
伪类 1
后代
子代
兄弟
call、apply和bind的区别和作用?
均是改变this的指向
Call和apply是临时改变this指向,即改变及执行 call的参数是依次传递,apply通过数组传递
bind永久改变this的指向,因为根据原函数新创建一个新函数,不会立即执行
JavaScript内置的常用对象有哪些?
Number String Boolean Error Global/window Array Function Object Math Date RegExp
解释CSS sprites的优点
CSS sprite将多个小图标整合到一张图中
其优点是:
减少网页http请求,提高性能
减少图片字节
减少命名困扰
更改风格方便
function doSomething(){
alert(this);
}
① 直接执行doSomething()。
② element.onclick = function(){doSomething()},点击element元素后。
③ element.onclick = doSomething,点击element元素后。
第一个输出的是window
直接执行这个函数,this指向的便是window
第二个输出element
element的点击事件是这个函数,这时this指向改为element
第三个输出window
可将将函数function doSomething()转换为function element.onclick()
这时指向还是window
题目中四个输出分别是 2 4 1 1
foo.getname()找的是第二个函数,直接输出2
getname()找的是后面名叫getname的函数,
但是直接function声明的getname函数会被之后用var声明的getname函数覆盖,所以为4
foo().getname()在foo调用后,找到的便是调用后的getname,而不会去找后面的getname
第四问同理,foo已经在第三问调用