笔试记录1

1、为数组添加删除元素
所有的数组都是对象,可以为其创建任意名字的属性,但当属性名只有在0~2的32次方-2之间的整数名才是索引,如果使用的属性是索引时,数组就会根据它们更新length的属性值。
数组的两个特殊行为:
1、为一个数组元素赋值,它的索引大于或等于现有数组的长度时,length属性的值将设置为i+1;
2、当设置数组的length属性值小于当前长度的非负整数n时,当前数组中那些大于或等于n的元素将从中删除、当设置length值大于当前长度时,不会向数组中添加新元素,而是在数组尾部创建了个新的区域。
例题:
//数组、关联数组;
var arr=[];
arr['a']=1;//设置数组的属性名为a
console.log(arr.lenth);
//输出undefined,因为这里没有索引出现,不能根据索引来调整length属性值
arr["2"]=2;//本来js就会将指定的数字索引值转换为字符串然后当成属性名来使用。
console.log(arr.length);
//输出3 length的值为最大索引下标加一
arr.length=0;//删除下标大于n(这里n=0)的数组元素
console.log(arr);
//输出 [a:1]


2、作用域
例题:
var f=function g(){
return 23;
}
console.log(typeof g());//会出错,因为g()没有在window中定义。
console.log(typeof f());//输出number。在window对象中f指向g()函数对象
3、new String()和String()的区别
首先我们要知道数据类型有原始数据类型和引用数据类型;

原始数据类型是将值存储在变量中且不可更改的,引用数据类型是将地址存放在变量中可改变。
原始数据类型:null undefined number string Boolean 

引用类型:数组 对象 函数

Number()  String()  Boolean()  //是将()里的数据转换成相应的数据类型。转换规则见犀牛书第49页。
Eg:  String(“A”)//返回的就是“A”
new String()  new Number()  new Boolean()//这里用new,创建了一个对象。
Eg: 
function showCase(value){
switch(value){
case "A":
console.log(1);
break;
case "string":
console.log(2);
break;
case undefined:
console.log(3);
break;
case "undefined":
console.log(4);
break;
default:
console.log(5);


}
}
showCase(new String("A"));//输出5  因为new String("A")返回的是一个对象
console.log(new String("A"))//String {0: "A", length: 1, [[PrimitiveValue]]: "A"}

猜你喜欢

转载自blog.csdn.net/lncci/article/details/79912642