首页 > 代码库 > 小白学前端12

小白学前端12

1.
var string = "you are";
var text = string;
string = "best";
console.log(text);  //输出"you are"
变量为一存储空间,但text=string不是说text指向string的存储空间,
而是text新建一个存储空间来存储string的值

var string = {0:"you are"};
var text = string;
string[0]="best";      //输出{0:"best"}
//string = {0:"best"}; //输出{0:"you are"}
console.log(text);
什么时候为指向呢?--数组!(对象)

2.
var array1=[1,2,3];
var array2=[3,4,5];
array1.concat(array2);
console.log(array1);
因为concat为纯函数,不会带来副作用的,以下为正解:

var array1=[1,2,3];
var array2=[3,4,5];
var array3 = array1.concat(array2);
console.log(array3);

3.
一个很好的验证闭包的例子
var array =[1,2,3,4,5];
for(var i=0;i<array.length;i++) array[i]+=1;
console.log(array); //输出[2,3,4,5,6]

var array =[1,2,3,4,5];
function forEach(array,action){
  for(var i=0;i<array.length;i++)
    // array[i]+=1;
    action(array[i]);
}
forEach(array,function(arrayElem){
 arrayElem+=1;
});
console.log(array); //输出[1,2,3,4,5]

来于之前对改变数组则会改变所有指向该数组的元素的认识,对forEach而言可以实现对每个元素遍历,并附加操作,
那么直接执行改变数组元素的操作,不就会改变原来的数组了!
实际并不会,哪怕forEach并未创建新数组
因为闭包:局部变量会在每次函数调用时重新创立,不同的函数调用是不会对其他函数内的局部变量产生任何的影响
在这里即是forEach调用的araay[i]已经是新创建的一个局部变量了,并不会对上一步函数调用的array产生任何影响

4.例如一个数组[21,21,18,19,21]代表某个人生活在哪个世纪,
另一个数组
[{name:"xiaomin",age:23},
{name:"lili",age:22},
{name:"nina",age:18},
{name:"bala",age:25},
{name:"limingming",age:28}
]代表相应的人的基本信息,依次对应着第一个数组的元素,
那么如何遍历将同一个世纪的人的平均年龄算出来呢?

4.在做薇薇学院的第二个例子时,发现img和ul元素放在一个包裹块中,会出现换行,然后设定宽度不合适的话,会出现ul元素显示不出来(header加了overflow:hidden)
>>>
因为ul是块元素啊,即使被包含,它还是会出现上下文换行的啊

解决办法:
    1.设置背景图片的方法(html里面没有img元素)

    2.设置img为absolute,再设置相对于包含块的偏移

5.怎么让文字在div中垂直居中(例如导航栏里面a元素的文字)?
>>>
百度知道搜出来一个很好的答案:
    1.单行垂直居中:
    如果一个容器内只有一行文字,那么设置它的实际高度height和所在行的高度line-height相等是最简单的.(设定height与line-height相同)
    2.如果是一段文字,父元素不限高,可以采用padding: 20px 0; (设定padding,使上下padding值相同即可)
    3.如果是一段文字,父元素有固定高:
    div#wrap{height:400px;display:table}
    div#content{vertical-align:middle;display:table-cell;}
    ...//但以上ie6不支持
    div#wrap{height:400px;width:700px;position:relative}
    div#subwrap{position:absolute;top:50%}
    div#content{position:relative;top:-50%}
    //实际未测试出居中效果....也不知道问题出在哪


6.怎么把ul前面的点去掉?
list-style:none;

7.怎么让文本段的首行缩进?
text-indent:2em;
但面对ol标签时,前面的序号并不能缩进怎么办?

8.怎么让图片和文字包括在一起,形成一种相片的感觉?


小白学前端12