8-31 程宗武
一、考试纠错
1、typeof返回的类型:number、string、boolean、undefined、object、function
2、js取完随机数过后必须取整
Math.floor(Math.random()*10+1)(向下取整)
3、异步处理
for(var i = 0;i<3;i++){
//异步处理,等到循环顺序执行完了,将要退出循环时,最后才执行它,此时处理异步函数已经保存了三次执行结果,因此 执行的结果为012333
setTimeout(function(){
console.log(i);
},0)
console.log(i)
}
4、自调函数
var z = 10;
function foo(){
console.log(z);
}
(function(funArg){
var z = 20;
//局部中不存在变量z,因此会自动向上查找全局变量z,因此输出结果为10
funArg();
})(foo)//此时相当于调用的时this.(foo),在foo函数中没有局部变量z,因此执行的是全局变量中的z。
5、函数创建的方式
第三种(函数对象方式):
var sum3 = new Function("num1","num2","return num1+num2");
6、对象的嵌套
var person = {
name:"小明",
age:22,
from:"杭州",
hobby:["看电影","旅游"],
sisters:[
{name:"小芬",age:25,job:"护士"},
{name:"小芳",age:23,job:"小学老师"}
]
}
二、数组
1、一维数组不存在下标越界异常
1)取值超过下标,不报错,返回undefined
var arr = [1,2,3]
console.log(arr[3]) -->undefined
2) 赋值超过下标,不报错,自动在指定位置创建新元素
var arr = [1,2,3]
arr[5] = 5;
console.log(arr); -->[ 1, 2, 3, <2 empty items>, 5 ]
3)稀疏数组:下标不连续的数组,此时数组会自动将length调整到最大下标+1
var arr = [1,2,3]
arr[5] = 5;
//下标不连续的数组,此时数组会自动将length调整到最大下标+1
console.log(arr.length); -->6
4)数组的缩容
var arr = [1,2,3]
// 1、删除末尾一个元素
arr.length--
console.log(arr); -->[1,2]
// 2、删除末尾n个元素
arr.length -= n;
// 3、清空数组
arr.length =0
console.log(arr) -->[]
5)判断一个对象是否为数组
var obj = [1,2,3]
console.log(Object.getPrototypeOf(obj) == Array.prototype) -->true
var isArray = Array.prototype.isPrototypeOf(obj)
console.log(isArray) -->true
obj.constructor==Array
obj instanceof Array
Object.prototype.toString.call(obj)=="[object Array]"
三、字符串
1、将任意类型转为字符串
var str1 = new String(1230);
console.log(typeof str1) -->Object //返回的是一个对象类型
var str1 = String(1230);
console.log(typeof str1) -->String 返回的是一个字符串类型
2、截取字符串
同数组的slice用法一致,截取字符串,start开始下标,end结束的下标,如果end为空截取到最后,如果为负数,自动转成0,虽然substring不支持负数参数,但可以将start设置为 ” str.length-n “,如果start大于end,则两个的位置会自动交换。
var str = "abcdefg"
var subStr = str.substring(str.length-1,3)
console.log(subStr) -->def
近期评论