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

评论