阅读目录
1.
css注释:// (部分浏览器不兼容) /**/ 单行/多行注释
html注释:<!-- -->
js注释:// /**/
jsp注释:<%--注释内容--%>
2.
static是无定位,元素定位的默认位置。有些时候为了消除继承定位,显示使用position:static进行默认定位。
fixed是相对窗口的固定定位,同绝对定位类似,但它的包含块是视区本身
relative是相对定位,相对元素默认位置的定位。
absolute是绝对定位,相对于第一个祖先元素。
3.
span应用了width:auto,height:100%,因为span是行级元素,宽度高度由内容决定,本身不含有宽度或高度。所以宽度为0,高度是父元素高度的100%,即200px
4.
clear 属性规定元素的哪一侧不允许其他浮动元素。
5.
回流:reflow:当render树的一部分或者全部因为大小边距等问题发生改变而需要重建的过程,叫做回流
重绘:repaint:当诸如颜色背景等不会引起页面布局变化,而只需要重新渲染的过程叫做重绘
display引起了dom元素大小的变化,(占据空间和不占据空间),所以是回流+重绘
visibility只是元素是否显示,元素一直占据着空间,所以只有重绘没有回流
6.
不可继承的:
display、position
margin、padding
border
background
height、min-height、max-height、width、min-width、max-width
overflow、float、clear
left、right、top、bottom
z-index
table-layout、vertical-align
排除ACD选择BE
7.
如果指定了 background-image ,那么 background-attachment 决定背景是在视口中固定的还是随包含它的区块滚动的。
ABCD都包含
8.
9.
区分css语法和jquery.css()语法
10.
ABC都是正确选项
11.
overflow:hidden也可以隐藏对象,但是隐藏的是溢出的部分
12.
13.
14.
border-collaspe属性表示是否将多个边框合起来(比如表格中)
15.
题意默认是紧挨的后一个
16.
outline (轮廓)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。
注释:轮廓线不会占据空间,也不一定是矩形。
outline-offset设置轮廓的偏移量,轮廓不占有空间
17.
iframe是浮动框架的意思,frameset和frame也是
18.
尺寸包括width和height、maxH、minH和maxW、minW
19.
颜色表示:
直接使用一些名字比如red、green
6位16进制赋值
3位16进制赋值
rgb(,)3位10进制数赋值
rgb(,)4位10进制数赋值(第四位是透明度)
rgb(,)3位百分数赋值,0%~100%对应0~255
20.
list-style-type:是序号的表示形式
值有none,无序列表的三个值和有序列表的值组成
21.
:first-line只能用于块元素,作用于内容的第一行
22.
可伸缩框是flexible box,属性均以box开头
box-ordinal-group:规定框的子元素的显示次序。
box-align:规定如何对齐框的子元素。
23.
js中的||运算符:返回true的值,并且是短路判断
为false的值:0 “” false null undefined NaN
为true的值: 1 2 3 … ‘a’ 等非空字符串
a()||b() 看方法的返回值
所以 a||3||b 第一次判断为null 第二次判断为3 true 返回3
js中的&&运算符:返回false的值,并且是短路判断,都为真时返回最后一个值
所以a&&b&&3 a=null 为false 返回null 即假 走else分支 输出0
所以结果是3 0
24.
a==b是值判断,会进行类型转换
如果是null==undefined 则返回true
如果是数字和字符串比较 则将字符串转换为数字类型
如果数字类型有一个为NaN,返回false(NaN==NaN为false)
a===b是严格判断,类型判断+值判断
如果是完全相等的字符串 返回true
如果是true===true false===false返回true
如果是null===undefined 返回false 但是null===null undefined===undefined 为true
如果是数值类型 都为数值且值相等 返回true 如果有一个是NaN 返回false
判断是不是NaN只能用isNaN()
如果引用相同对象或函数 返回true
所以结果是true+false
25.
js中,只有子函数才能读取一个函数的局部变量,函数内部可以直接访问全局变量。
如果不是构造函数,是不能访问其中的局部变量。所以a.x和a.y都是undefined。两个undefined相加结果为NaN。
子函数不仅可以使用变量,还可以返回这个函数。或者将局部变量作为返回值,就可以在函数外部获得这个局部变量。
如果在函数内部定义变量不加var关键字,就相当于定义了一个全局变量。
上面创建的子函数被称为js闭包。
js的局部变量还有一个特性就是提升。在方法内部任何位置定义的一个局部变量,都会提升到开头定义,但赋值语句不变。
比如
function(){
if(1){
var a = 1;
}
else{
var b =2;
}
}
js的提升机制会变成:
function(){
var a;//a的值为undefined
var b;//b的值为undefined
if(1){
a = 1;//a的值赋为1
}
else{
b =2;//b的值赋为2
}
}
26.
window.status = "msg";
27.
js中,dom对象.elements返回一个包含所有子元素的数组
dom.elements.length返回元素数组的长度
通常使用dom.elements[i].type或者dom.elements[i].value获得元素的类型和值
28.
A false B false C true D false
instanceof 运算符用法:a instanceof B
B.prototype是否位于a的原型链上
对于null instanceof Object为false ,但typeof null显示为“object”。
null并不是以Object为原型构造出来的,所以instanceof为false。
typeof null="object"是一个bug。
29.
var select = document.getElementsByTagName("select")[0];
var idx = select.selectedIndex;
//获取到选中的idx
获取选中部分的文本是text,值是value
30.
js中定义数组 两种方式:
(1)字面量 var arr = [1, 2, 3];
(2)数组对象 var arr3 = new Aarray(2, 3); //等价于[2,3]表示里面有2个数组元素为2,3
31.
js中定义变量可以省略关键字var,但是这样创建的变量就是一个全局变量。不推荐。
(function(){})();是匿名函数的意思,为了防止在js中定义全局变量。匿名函数在定义后直接运行。
var a = "old";
var a ;
console.log(a);//"old"
var a = "new";
console.log(a);//"new"
32.
newObj.value+=newObj.key; “2”+=“1”; “21”;
33.
window.setTimeout(checkState,10000);//方法而不是字符串10s后执行方法
window.setTimeout(checkState(),10000);//直接执行方法
window.setTimeout(“checkState()”,10000);//不能执行,
setTimeout函数第一个参数不能是字符串
如果没有函数,可以定义匿名函数new function(){},这样也会在指定的时间后执行。
如果是字符串,会自动转换为new function 或表达式,最终报错。
function a(){
alert('a');
}
//window.setTimeout(a,2000);2秒后打印
//window.setTimeout('a',2000);不打印
//window.setTimeout('a()',2000);不打印
//window.setTimeout(a(),2000);立即打印
function b(ab){
alert(ab);
}
//window.setTimeout(b(2),2000);//立即打印
//window.setTimeout("b(2)",2000);//不打印
//window.setTimeout("b("+2+")",2000);//不打印
//window.setTimeout(function(){b(2);},2000);//2s后打印
//window.setTimeout(new function(){b(2);},2000);//直接打印
window.setTimeout(function(){b(2);}(),2000);//直接打印
34.
js中this的用法:
function中的this:指向window,因为是window调用的方法
对象的function中的this:指向这个对象
匿名函数中的this:指向window。匿名函数的执行是有全局性的
对象中定义的普通函数的this:指向window,因为没有通过父对象调用
var myObject = {
foo: "bar",
func: function() {
var self = this;
console.log(self===myObject);//true
console.log(this.foo); //bar
console.log(self.foo);//bar
(function() {
console.log(this==window);//window
console.log(this.foo); //undefined
console.log(self==myObject);//self和匿名函数同级
console.log(self.foo); //bar
}());
} };
myObject.func();
35.
js undefined和error not defined的区别:
undefined是指在引用之后声明了变量(js变量提升)/在引用之前只声明了没有赋值
error not defined是指整个域中没有定义变量,引用时会报错。
g不是一个声明的函数,而是表达式的一部分。g()没有被定义。
所以在引用时找不到g
36.
li的点击事件会自动寻找要调用的函数,此时循环已经执行完,i变为4。alert(i)寻找到父级域中var i 的值为4,打印的结果都是4。
37.
js中的in关键字:
(1)数组中取值 for( val in array)
(2)判断对象是否存在于数组/对象中。对于数组,对象是索引,对于对象,判断的对象是属性。
if(! "a" in window){
var a = 1;
}
alert(a);
等价于
var a;
if(! "a" in window){
a = 1;
}
alert(a);
所以a已经被定义为全局变量,不会进入if分支,a的值显示为undefined
38.
js中的减号:
如果都是数字类型,直接计算
如果有一个是NaN类型,结果也是NaN类型
如果是String、boolean、null、undefined类型,系统会隐式调用toNumber(),然后和前两条规则一致
如果是对象类型,会先调用valueOf(),如果没有再调用toString(),然后和前三条规则一致。
console.log(1+"2"+"2");// 122
console.log(1+ +"2"+"2"); //1+ (+"2")+"2",+"2"是一元运算符,将字符串转换为数字,和toNumber()方法一样,所以是1+2+"2",32
console.log("A"- "B"+"2");//减号的规则,NaN2
console.log("A"- "B"+2);//NaN+数字类型,为NaN
39.
(function(){
var a=b=5;
})();
console.log(b);//5
console.log(a);//出错 Error: a is not defined
实际上拆分为
(function(){
var a=b;
b=5;
})();
console.log(b);//5 b为全局变量
console.log(a);//a是局部变量 访问不到
40.
js中的^= 和~=
~=是按位取反的意思
^=是按位异或的意思
a^=(1<<4)-1
a = 10 ^ 15
1010 ^ 1111
0101 = 5
41.
fun = function(){
alert(this===window);//true
alert(this.a);
};
this是window。
a是window的一个属性,从原型链中找a,没找到会返回undefined。
42.
js常用内置对象:String array Math Date RegExp Global
43.
基本数据类型:String、Boolean、Number、undefined、null、Symbol
引用数据类型(复杂数据类型):Object
js中所有数字都是以64位浮点数形式储存,64bit=8byte
44.
第二个add()在编译时替代了第一个add(),所以返回值都是m+3,4。
45.
ABCD都是函数调用的方式
函数名.call()
函数名.apply()
call()和apply()相同点是,作用一样,都是调用函数
区别是,两个函数第一个参数都是this对象,call后面的参数是列出,apply后面的参数是数组
46.
for(var i=0;i<5;++i){
setTimeout(function (){
console.log(i+ ’ ’);},100);
}
和之前的一道题相同,先执行完循环,然后setTimeout执行函数时,寻找i的值,发现父级域中定义的var i 的值是5,所以依次输出5个5。
47.
没有关系就是java和js的关系
48.
Sea.js(CMD) RequireJS(AMD)
AMD (Asynchronous Module Definition,异步模块定义)
CMD 即Common Module Definition通用模块定义
49.
返回全局变量的加法结果 foobar
50.
语法错误
js中的void是一个一元运算符,出现在操作数的前面
void 0; void (0);都是合法的写法
操作数可以是任意类型,但是会忽略操作数的结果,返回undefined
51.
Object不是基本类型,是引用(复杂)数据类型
52.
for(x in person) x是属性
person[x],属性相当于下标,取到的是属性值
所以是属性值的加法,johnDoe25